From b46cddab1bc34877ae7d7ea2dc3645c0e03b4284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=B8=D1=80=D0=B5=D1=86=D0=BA=D0=B8=D0=B9=20=D0=9C?= =?UTF-8?q?=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Tue, 7 May 2019 11:21:54 +0300 Subject: [PATCH] init --- 16x16.fnt | Bin 0 -> 53492 bytes COPYING | 340 ++++++++++ Makefile | 103 +++ TODO | 4 + back.jpg | Bin 0 -> 16512 bytes boot.config | 31 + button.inc | 116 ++++ common.inc | 1467 ++++++++++++++++++++++++++++++++++++++++++ dia_access.inc | 201 ++++++ dia_audio.inc | 95 +++ dia_fulloptions.inc | 227 +++++++ dia_help.inc | 54 ++ dia_keymap.inc | 99 +++ dia_lang.inc | 233 +++++++ dia_modes.inc | 213 ++++++ dia_options.inc | 30 + dia_profile.inc | 139 ++++ dia_resolution.inc | 117 ++++ dia_video.inc | 204 ++++++ dia_videomodes.inc | 212 ++++++ help.inc | 716 +++++++++++++++++++++ install.config | 30 + keytables.inc | 1384 +++++++++++++++++++++++++++++++++++++++ langlist | 38 ++ langnames.inc | 40 ++ locale.inc | 166 +++++ main.inc | 263 ++++++++ menuconfig.inc | 221 +++++++ panel.inc | 154 +++++ po/Makefile | 14 + po/README | 24 + po/be.po | 317 +++++++++ po/bg.po | 320 +++++++++ po/bin/add_text | 99 +++ po/bin/change_text | 105 +++ po/bin/fixpot | 27 + po/bin/po2txt | 182 ++++++ po/bin/rm_text | 63 ++ po/bootloader.pot | 295 +++++++++ po/bs.po | 317 +++++++++ po/cs.po | 319 +++++++++ po/da.po | 320 +++++++++ po/de.po | 318 +++++++++ po/es.po | 319 +++++++++ po/et.po | 317 +++++++++ po/fi.po | 318 +++++++++ po/fr.po | 321 +++++++++ po/hr.po | 317 +++++++++ po/hu.po | 320 +++++++++ po/is.po | 319 +++++++++ po/it.po | 319 +++++++++ po/kk.po | 317 +++++++++ po/lt.po | 315 +++++++++ po/lv.po | 317 +++++++++ po/nl_BE.po | 320 +++++++++ po/nl_NL.po | 320 +++++++++ po/nn.po | 317 +++++++++ po/pl.po | 315 +++++++++ po/pt.po | 318 +++++++++ po/pt_BR.po | 314 +++++++++ po/ro.po | 317 +++++++++ po/ru.po | 318 +++++++++ po/sk.po | 319 +++++++++ po/sl.po | 320 +++++++++ po/sq.po | 317 +++++++++ po/sr.po | 317 +++++++++ po/sv.po | 317 +++++++++ po/uk.po | 318 +++++++++ scrape-console-setup | 402 ++++++++++++ scrape-localechooser | 87 +++ splash.inc | 69 ++ system.inc | 808 +++++++++++++++++++++++ theme_colors.inc | 4 + theme_positions.inc | 4 + timeout.inc | 48 ++ timezones.inc | 57 ++ window.inc | 664 +++++++++++++++++++ xmenu.inc | 522 +++++++++++++++ 78 files changed, 20228 insertions(+) create mode 100644 16x16.fnt create mode 100644 COPYING create mode 100644 Makefile create mode 100644 TODO create mode 100644 back.jpg create mode 100644 boot.config create mode 100644 button.inc create mode 100644 common.inc create mode 100644 dia_access.inc create mode 100644 dia_audio.inc create mode 100644 dia_fulloptions.inc create mode 100644 dia_help.inc create mode 100644 dia_keymap.inc create mode 100644 dia_lang.inc create mode 100644 dia_modes.inc create mode 100644 dia_options.inc create mode 100644 dia_profile.inc create mode 100644 dia_resolution.inc create mode 100644 dia_video.inc create mode 100644 dia_videomodes.inc create mode 100644 help.inc create mode 100644 install.config create mode 100644 keytables.inc create mode 100644 langlist create mode 100644 langnames.inc create mode 100644 locale.inc create mode 100644 main.inc create mode 100644 menuconfig.inc create mode 100644 panel.inc create mode 100644 po/Makefile create mode 100644 po/README create mode 100644 po/be.po create mode 100644 po/bg.po create mode 100755 po/bin/add_text create mode 100755 po/bin/change_text create mode 100755 po/bin/fixpot create mode 100755 po/bin/po2txt create mode 100755 po/bin/rm_text create mode 100644 po/bootloader.pot create mode 100644 po/bs.po create mode 100644 po/cs.po create mode 100644 po/da.po create mode 100644 po/de.po create mode 100644 po/es.po create mode 100644 po/et.po create mode 100644 po/fi.po create mode 100644 po/fr.po create mode 100644 po/hr.po create mode 100644 po/hu.po create mode 100644 po/is.po create mode 100644 po/it.po create mode 100644 po/kk.po create mode 100644 po/lt.po create mode 100644 po/lv.po create mode 100644 po/nl_BE.po create mode 100644 po/nl_NL.po create mode 100644 po/nn.po create mode 100644 po/pl.po create mode 100644 po/pt.po create mode 100644 po/pt_BR.po create mode 100644 po/ro.po create mode 100644 po/ru.po create mode 100644 po/sk.po create mode 100644 po/sl.po create mode 100644 po/sq.po create mode 100644 po/sr.po create mode 100644 po/sv.po create mode 100644 po/uk.po create mode 100755 scrape-console-setup create mode 100755 scrape-localechooser create mode 100644 splash.inc create mode 100644 system.inc create mode 100644 theme_colors.inc create mode 100644 theme_positions.inc create mode 100644 timeout.inc create mode 100644 timezones.inc create mode 100644 window.inc create mode 100644 xmenu.inc diff --git a/16x16.fnt b/16x16.fnt new file mode 100644 index 0000000000000000000000000000000000000000..1cee5e5e42be811838f3a2819d138f1eb6135552 GIT binary patch literal 53492 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 + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..96b3a62 --- /dev/null +++ b/Makefile @@ -0,0 +1,103 @@ +ifneq ($(BINDIR),) +BINDIR := $(BINDIR)/ +else +BINDIR := $(dir $(firstword $(wildcard /usr/bin/gfxboot-compile) $(wildcard /usr/bin/mkbootmsg) $(wildcard ../../gfxboot-compile) $(wildcard ../../mkbootmsg))) +endif +ifneq ($(PRIVBINDIR),) +PRIVBINDIR := $(PRIVBINDIR)/ +else +PRIVBINDIR := $(dir $(firstword $(wildcard /usr/share/gfxboot/bin/keymapchars) $(wildcard ../../keymapchars))) +endif + +ifneq (,$(wildcard $(BINDIR)gfxboot-compile)) +MKBOOTMSG = $(BINDIR)gfxboot-compile +else +#MKBOOTMSG = $(BINDIR)mkbootmsg +MKBOOTMSG = $(BINDIR)gfxboot-compile +endif +KEYMAPCHARS = $(PRIVBINDIR)keymapchars +BFLAGS = -O -v -L ../.. +INCLUDES = $(wildcard *.inc) +# Filter out Arabic, Indic languages, and Thai, which we cannot render, and +# Dzongkha and Mongolian, which ought to be rendered vertically. +# gfxboot has no bidirectional text support yet +# (https://bugs.launchpad.net/ubuntu/+source/gfxboot/+bug/212491) so +# right-to-left languages (Arabic) won't work. This can be worked-around +# by displaying RTL text in visual format (which works well for Hebrew and should +# be considered for use in other languages where applicable) +TRANSLATIONS = $(addsuffix .tr,en $(filter-out ar bn bo dz gu hi km ml mn my ne pa ta th ug, $(notdir $(basename $(wildcard po/*.po))))) + +DEFAULT_LANG = + +PIC_COMMON = back.jpg + +FILES_CORE = init + +INST_EXT = langlist $(TRANSLATIONS) 16x16.fnt $(PIC_COMMON) + +FILES_INST = $(FILES_CORE) $(INST_EXT) + +FILES_BOOT = $(FILES_CORE) langlist $(TRANSLATIONS) 16x16.fnt \ + $(PIC_COMMON) + +FILES_BOOT_EN = $(FILES_CORE) en.tr 16x16.fnt $(PIC_COMMON) + +ifdef DEFAULT_LANG +FILES_INST += lang +FILES_BOOT += lang +FILES_BOOT_EN += lang $(patsubst boot/%,%,$(wildcard boot/$(DEFAULT_LANG).tr)) +endif + +.PHONY: all themes font clean po + +all: themes + +boot install: po + mkdir -p $@ + +po: + make -C po + +themes: bootdir installdir + +bootdir: boot.config boot $(INCLUDES) + @cp -a po/*.tr boot + @for i in $(FILES_BOOT) ; do [ -f $$i ] && cp $$i boot ; done ; true + @echo en >boot/langlist + $(MKBOOTMSG) $(BFLAGS) -l boot/log -c $< boot/init +ifdef DEFAULT_LANG + @echo $(DEFAULT_LANG) >boot/lang + @echo $(DEFAULT_LANG) >>boot/langlist +endif + @cd boot && echo $(FILES_BOOT_EN) | sed -e "s/ /\n/g" | cpio --quiet -o >message + +installdir: install.config install $(INCLUDES) + @cp -a po/*.tr install + @for i in $(FILES_INST) ; do [ -f $$i ] && cp $$i install ; done ; true + $(MKBOOTMSG) $(BFLAGS) -l install/log -c $< install/init +ifdef DEFAULT_LANG + @echo $(DEFAULT_LANG) >install/lang +endif + @cd install && find | sed -e "s/ /\n/g" | grep -v bootlogo | cpio --quiet -o >bootlogo + @tar -C install -czf install/bootlogo.tar.gz bootlogo $(INST_EXT) + +font: + cat po/*.po >tmp.txt + gfxboot-font -v -l 16 \ + -p /usr/share/fonts/droid:/usr/share/fonts/unifont \ + -a 0x2022-0x2023 \ + -c ISO-8859-15 -c ISO-8859-2 -c koi8-r \ + `$(KEYMAPCHARS) keytables.inc` \ + -t tmp.txt \ + -t install/log -t boot/log \ + -t langlist -t langnames.inc \ + -f "DroidSans":size=13 \ + -f unifont:prop=2:space_width=4:size=16 \ + 16x16.fnt >16x16.fnt.log + rm -f tmp.txt + +clean: + make -C po clean + rm -f bootdir installdir *~ *.log + rm -rf boot install + diff --git a/TODO b/TODO new file mode 100644 index 0000000..9ad0bb7 --- /dev/null +++ b/TODO @@ -0,0 +1,4 @@ +suck language list out of localechooser at d-i build time +font reduction may need to be tweaked +fix zh_CN/zh_TW/pt_BR preseeding (maybe a localechooser fix) +simpler logo handling (black background, small logo pasted into it) diff --git a/back.jpg b/back.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2acbb2ff3953473e17af02adb2d2d4723b96a2d GIT binary patch literal 16512 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 literal 0 HcmV?d00001 diff --git a/boot.config b/boot.config new file mode 100644 index 0000000..e9cf00d --- /dev/null +++ b/boot.config @@ -0,0 +1,31 @@ +%% include system.inc + +%% include timeout.inc +%% include common.inc + +%% include po/text.inc +%% include window.inc +%% include button.inc +%% include help.inc +%% include main.inc +%% include menuconfig.inc +%% include xmenu.inc +%% include dia_video.inc +%% include dia_lang.inc +%% include dia_keymap.inc +%% include dia_modes.inc +%% include dia_help.inc +%% include dia_profile.inc +%% include dia_audio.inc +%% include dia_options.inc +%% include dia_fulloptions.inc +%% include dia_videomodes.inc +%% include dia_access.inc +%% include panel.inc +%% include keytables.inc +%% include timezones.inc +%% include langnames.inc +%% include locale.inc +%% include splash.inc + + diff --git a/button.inc b/button.inc new file mode 100644 index 0000000..372ef54 --- /dev/null +++ b/button.inc @@ -0,0 +1,116 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% button handling +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Button templates. +% +% [ x y width height label selected hotkey action ] +% +/button.ok { [ 0 0 90 25 txt_ok false 0 0 ] } def +/button.cancel { [ 0 0 90 25 txt_cancel false keyEsc 0 ] } def +/button.reboot { [ 0 0 90 25 txt_reboot false 0 0 ] } def +/button.continue { [ 0 0 90 25 txt_continue false 0 0 ] } def +% /button.eject { [ 0 0 90 25 "Eject" false 0 0 ] } def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Set default button. +% +% ( button ) => ( button ) +% +/button.default { + dup 5 true put +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Make it _not_ the default button. +% +% ( button ) => ( button ) +% +/button.notdefault { + dup 5 false put +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Set button position. +% +% ( button x y ) ==> ( button ) +% +/button.moveto { + rot dup 0 5 -1 roll put exch over 1 rot put +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Assign action to button. +% +% ( button action ) => ( button ) +% +/button.setaction { + over 7 rot put +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw button. +% +% ( button ) ==> ( ) +% +/button.show { + /bt.x over 0 get def + /bt.y over 1 get def + /bt.width over 2 get def + /bt.height over 3 get def + /bt.text over 4 get def + /bt.default exch 5 get def + + bt.text strsize + bt.height sub neg 2 div /bt.y.textofs exch def + bt.width sub neg 2 div /bt.x.textofs exch def + + bt.x bt.y moveto + currentpoint currentpoint currentpoint + + currentpoint bt.width bt.height window.current .color.bg get setcolor fillrect moveto + + bt.default { + black black + } { + window.current .color.bg get dup + } ifelse + bt.width bt.height drawborder + moveto 1 1 rmoveto white black bt.width 2 sub bt.height 2 sub drawborder + moveto + % 2 2 rmoveto white black bt.width 4 sub bt.height 4 sub drawborder + + window.current .color.fg get setcolor + moveto bt.x.textofs bt.y.textofs rmoveto bt.text show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Press button. +% +% ( button ) ==> ( ) +% +/button.press { + /bt.x over 0 get def + /bt.y over 1 get def + /bt.width over 2 get def + /bt.height exch 3 get def + + bt.x 3 add bt.y 3 add moveto + bt.width 7 sub bt.height 7 sub savescreen + 1 1 rmoveto dup restorescreen free + + bt.x 1 add bt.y 1 add moveto black white bt.width 2 sub bt.height 2 sub drawborder + % bt.x 2 add bt.y 2 add moveto black white bt.width 4 sub bt.height 4 sub drawborder +} def + + diff --git a/common.inc b/common.inc new file mode 100644 index 0000000..d60d74e --- /dev/null +++ b/common.inc @@ -0,0 +1,1467 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Main part. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +% max command line length +/cmdlinelength 512 def +/boot.ed .undef def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Install source is 64bit? +% +% ( ) ==> ( true|false ) +% +/64bit_source { + % 64 bit dir exists and is != 32 bit dir + 64bit_boot_dir 32bit_boot_dir ne + 64bit_boot_dir .undef ne and +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Are we a dvd? +% +% ( ) ==> ( true|false ) +% +/is_dvd { + % check only once + is_dvd.result .undef ne { is_dvd.result return } if + + /is_dvd.result + mediatype m_cdrom eq { + 0x10 readsector + dup 0x50 add getdword exch free + 9 shr % iso size in MB + 720 gt % assume dvd if > 720 MB + } { + false + } ifelse + def + + is_dvd.result return +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Are we a live image? +% +% ( ) ==> ( true|false ) +% +/is_live { + % check only once + true return + is_live.result .undef ne { is_live.result return } if + + /is_live.result "/casper/filesystem.manifest" filesize .undef ne def + + is_live.result return +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Install source is 32 & 64bit? +% +% ( ) ==> ( true|false ) +% +/32+64bit_source { + 32bit_boot_dir .undef ne + % uncomment next line to automatically warn about 32bit software on 64bit machines, too + % 64bit_boot_dir .undef ne and +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Enough memory? +% +% ( ) ==> ( true|false ) +% +/enough_mem { + biosmem 4 20 shl lt + biosmem 200 20 shl ge or + syslinux not or +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Check if there are boot directories for 32 & 64bit. +% +% Assumes 32bit to be in *i386* and 64bit in *x86_64*. +% +% ( ) ==> ( ) +% +/check_arch_boot_dir { + getcwd dup .undef ne { + /64bit.tmp 256 string def + + dup "i386" strstr 0 ne over "x86_64" strstr 0 ne or { + dup "i386" strstr { + /32bit_boot_dir exch def + /64bit_boot_dir 32bit_boot_dir "i386" "x86_64" strreplace + } { + /64bit_boot_dir exch def + /32bit_boot_dir 64bit_boot_dir "x86_64" "i386" strreplace + } ifelse + + dup "%s/isolinux.cfg" 64bit.tmp sprintf + 64bit.tmp filesize .undef ne { def } { free pop } ifelse + + } { + /32bit_boot_dir over def + /64bit_boot_dir exch def + } ifelse + + 64bit.tmp free + + % font.normal setfont + % 0 400 moveto 32bit_boot_dir print + % 0 420 moveto 64bit_boot_dir print dtrace + + } { + pop + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% input event handling +% +% ( key ) ==> ( input_buffer menu_entry action ) +% +% key +% bit 0-7 ascii +% bit 8-15 scan code +% bit 16-32 status bits (ctrl, shift...) +% +% action +% 0: ok, stay in input loop +% 1: switch to text mode +% >=2: start linux +% +/KeyEvent { + % timeout + + dup 0 eq { boot.buf buildcmdline 2 return } if + + debug 4 ge { + % print keycode somewhere + -1 settransparentcolor + white setcolor + 500 0 moveto dup print " " print + } if + + dup 0xff00 and 16 shl over 0xff and dup 0xe0 eq { pop 0 } if add /key exch def + 16 shr 0xffff and /keystat exch def + + key keyTab eq keyStatus statusShift and 0 ne and { + /key keyShiftTab def + } if + + key + + config.keymap .km.map get { mapkey } if + + dup 0xffffff and dup { exch } if pop + + debug 4 ge { + % print mapped key somewhere + -1 settransparentcolor + white setcolor + 500 20 moveto dup print " " print + } if + + % some special keys + debug.input + + % put key through normal input queue + window.input + + pop + + window.action actExit eq { + /window.action actNothing def + "" -1 1 return + } if + + window.action actCloseInfo eq { + /window.action actNothing def + "" -1 3 return + } if + + window.action actPassword eq { + /window.action actNothing def + password.dialog { + password.dialog .ed.buffer.list get 0 get + } { "" } ifelse + -1 3 return + } if + + window.action actStart eq { + /window.action actNothing def + boot.buf buildcmdline 2 return + } if + + window.action actRedraw eq { + /window.action actNothing def + main.redraw + } if + + window.action actRedrawPanel eq { + /window.action actNothing def + panel.show + } if + + boot.buf menu.indices menu.entry get 0 +} def + + +/bc.cmd cmdlinelength string def + +% ( option_string ) ==> ( cmdline menu_entry ) +% +% grub: +% just return +% +% syslinux & lilo: +% check if the commmand line starts with the current kernel name or +% "linux"; if not, put the kernel name in front of the command line. (This +% is to keep compatibility with the old scheme requiring the user to write +% the kernel name explicitly.) +% +/buildcmdline { + menu.entry 0 lt { -1 return } if + menu.entry menu.texts length ge { -1 return } if + + /bc.opts exch def + /bc.kernel menu.texts menu.entry get def + + grub { + + /bc.addkernel false def + + } { + + /bc.addkernel true def + + [ bc.kernel "linux" ] 0 over length 1 sub 1 exch { + over exch get + + bc.opts over eq { + /bc.addkernel false def + } { + bc.opts over strstr 1 eq { + bc.opts over length get ' ' eq { + /bc.addkernel false def + } if + } if + } ifelse + + pop + + bc.addkernel not { exit } if + + } for + + pop + + % special case: option is identical to label + bc.kernel "apic" eq { /bc.addkernel true def } if + + } ifelse + + syslinux { + /add_suffix .undef def + + } if + + % getcwd 0 300 moveto show trace + + bc.addkernel { + bc.kernel + dup "linux" eq add_suffix .undef ne and { + add_suffix exch "%s%s " + } { + "%s " + } ifelse + bc.cmd sprintf + } { + bc.cmd 0 0 put + } ifelse + + cmdline.hidden "" ne { + /add_suffix 32 string def + + video.modes.list .undef ne { + video.modes.list xmenu.video .xm_current get get + dup .vm_mode get 0 ge { + dup .vm_height get exch .vm_width get + ",%04d%04d.spl" add_suffix sprintf + } { pop } ifelse + } if + + add_suffix 1 add filesize .undef eq { + add_suffix 0 0 put % empty string + } if + + add_suffix { + /bc.tmp cmdline.hidden length add_suffix length add string def + cmdline.hidden "initrd" bootopt.find dup .undef ne { + skipnonspaces + dup + dup 0 get over 0 0 put + add_suffix cmdline.hidden "%s%s" bc.tmp sprintf + 0 exch put + "%s" bc.tmp dup length add sprintf + } { + pop + bc.tmp cmdline.hidden strcpy pop + } ifelse + + bc.tmp "%s " bc.cmd dup length add sprintf + + bc.tmp free /bc.tmp .undef def + } { + cmdline.hidden "%s " bc.cmd dup length add sprintf + } ifelse + } if + + bc.opts "%s " bc.cmd dup length add sprintf + + xmenu.fulloptions { + fulloptions.option .undef ne { + fulloptions.option "%s " bc.cmd dup length add sprintf + } if + } if + + syslinux { + + menu.args menu.entry get "hd0" ne { + video.modes.list .undef ne { + video.modes.list xmenu.video .xm_current get get .vm_mode get + + dup 0 ge { + 0x200 add "vga=0x%x " bc.cmd dup length add sprintf + } if + } if + + /calculate.param { + "calculate=" bc.cmd dup length add sprintf + /calculate.param { "," bc.cmd dup length add sprintf } def + } def + + config.lang { + config.lang "en_US" ne { + calculate.param + config.lang lang.getlocale + "lang:%s" + bc.cmd dup length add sprintf + } if + } if + + config.lang { + config.lang "en_US" ne { + calculate.param + config.lang lang.gettimezone + "timezone:%s" + bc.cmd dup length add sprintf + } if + } if + + xmenu.resolution { + xmenu.resolution .xm_current get dup 0 ne { + calculate.param + resolution.alltexts exch get + "resolution:%s" + bc.cmd dup length add sprintf + } { pop } ifelse + } if + + audio.use { + xmenu.audio { + xmenu.audio .xm_current get dup 0 ne { + calculate.param + audio.values exch get + "audio:%s" + bc.cmd dup length add sprintf + } { pop } ifelse + } if + } if + + video_modes.selected.append .undef ne { + video_modes.selected.append 0 get 0 ne { + calculate.param + video_modes.selected.append "%s" bc.cmd dup length add sprintf + } if + } if + + fulloptions.cmd_composite dup 0 get 0 ne { + calculate.param + "%s" bc.cmd dup length add sprintf + } { pop } ifelse + + modes.selected.replace .undef ne { + modes.selected.replace "=" strstr dup 0 ne { + modes.selected.replace exch strndup /bc.tmp exch def % e.g. "file=" + bc.cmd { + dup 0 get 0 eq { exit } if + dup getword + dup "=" strstr dup 0 ne { over exch 0 put } { pop } ifelse + dup bc.tmp eq exch free { + bc.tmp free + dup strdup /bc.tmp exch def + bc.tmp modes.selected.replace "%s%s" 4 index sprintf + bc.tmp free /bc.tmp .undef def + exch pop exit + } if + exch pop + skipspace + } loop + pop + bc.tmp free /bc.tmp .undef def + } { + pop + } ifelse + } if + } if + } if + + xmenu.access { + access.option .undef ne { + access.option "%s " bc.cmd dup length add sprintf + } if + } if + + xmenu.profile { + profile.options xmenu.profile .xm_current get get dup "" ne { + "%s " bc.cmd dup length add sprintf + } { pop } ifelse + } if + + timeout.hidden { + "maybe-ubiquity " bc.cmd dup length add sprintf + } if + + bc.cmd dropspaces + + debug 3 ge { + 0 0 moveto white setcolor + bc.cmd print "<< (press ESC) " print trace + } if + + bc.cmd menu.indices menu.entry get +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( menu_entries_array cmdline_args_array defaultentry ) == > ( ) +/MenuInit { + colorbits 8 le { + 0 setcolor 0 0 moveto screen.size fillrect loadpalette + } if + + init + + /menu.entry -1 def + + /menu.dentry exch def + + menuconfig.init + + "audio" getgfxconfig dup .undef ne { + "true" eq { + /audio.use true def + } { + /audio.use false def + } ifelse + } { pop } ifelse + "foreground" getgfxconfig dup .undef ne { + strtol + /menu.text.select over def + /boot.text.options over def + /boot.text.normal over def + /panel.high exch def + } { pop } ifelse + "background" getgfxconfig dup .undef ne { + strtol + /menu.text.normal over def + /panel.normal over def + /title.bg exch def + } { pop } ifelse + "screen-colour" getgfxconfig dup .undef ne { + strtol + /menu.bar.color over def + /xmenu.dark exch def + } { pop } ifelse + "composite-labels" getgfxconfig dup .undef ne { + /fulloptions.composite [ + 2 index + { + skipspace dup 0 get 0 eq { exit } if + getword exch + } loop + pop + ] def + pop + } { pop } ifelse + "access-options" getgfxconfig dup .undef ne { + /access.optionnames [ + .undef + 3 index + { + skipspace dup 0 get 0 eq { exit } if + getword exch + } loop + pop + ] def + pop + } { pop } ifelse + "access-options-v1" getgfxconfig dup .undef ne { + /access.options.v1 exch def + } { pop } ifelse + "hidden-timeout" getgfxconfig dup .undef ne { + % If >= 1, display just the main and access logos and wait for a + % keypress; if timeout expires, boot without showing the menu. + % If >= 2, as above, but don't display the splash image (hack for + % Ubuntu 10.04 LTS, so please don't rely on it permanently). + strtol + dup 1 ge { /timeout.hidden true def } if + 2 ge { /timeout.hidden.showsplash false def } if + } { pop } ifelse + + menu.bar.color setcolor 0 0 moveto screen.size fillrect + + % Hack for Ubuntu 10.04 LTS. Should be replaced by better logo handling + % in general. + timeout.hidden.showsplash not { + /background.file.orig background.file def + "blank.pcx" findfile + /background.file over def setimage + } if + + % Move the logo down 84 pixels to centre it. This is obviously a gross + % hack. To fix this, we need to move to smaller logo images which are + % positioned on the screen in code, rather than doing the positioning in + % the image files. + timeout.hidden { + 0 0 moveto 0 0 0 84 image + 0 84 + } { 0 0 } ifelse + moveto 0 0 clip.size image + + /menu.args exch def + /menu.texts exch def + /menu.humans exch def + /menu.indices exch def + /menu.labels exch def + + timeout.hidden { + window.splash + dup window.init + window.show + } { + window.main + dup window.init + window.show + + 32+64bit_source not { + + 64bit { + 64bit_source not { notimeout /timeout.hidden false def 32bit_popup } if + } { + 64bit_source { notimeout /timeout.hidden false def 64bit_popup } if + } ifelse + + } if + + lang.displayed not { panel.lang } if + } ifelse + + 50 sound.setvolume + "startup.mod" findfile dup .undef ne { + /player.startup 0 def + player.startup over mod.load + player.startup 0 mod.play + free + } { pop } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Setup boot option input field. +% +% ( ) == > ( ) +% +/bootoptions.init { + window.current .color.fg get setcolor + window.current .ed.font get setfont + + boot.show { boot.ed edit.hidecursor } if + menu.args menu.entry get + bootpromptmap + + boot.show { + ed.color setcolor + boot.ed over edit.init + "" ne { boot.ed ' ' edit.input } if + } { + "%s" boot.ed 3 get sprintf + } ifelse + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Split command line into hidden and normal part. +% +% ( cmdline_args ) == > ( new_cmdline_args ) +% +/bootpromptmap { + /cmdline exch def + + cmdline "showopts" getoption + dup "" eq { + cmdline.shown 0 0 put + pop cmdline "%s" cmdline.shown sprintf + cmdline.hidden 0 0 put + } { + "showopts" length add skipspaces + "%s" cmdline.shown sprintf + cmdline "%s" cmdline.hidden sprintf + cmdline.hidden "showopts" getoption 0 0 put + } ifelse + + cmdline.shown dropspaces + cmdline.hidden dropspaces + + cmdline.shown +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Get boot option. +% +% ( cmdline option_name ) ==> ( option_start ) +% +/getoption { + /go.name exch def + /go.cmdline exch def + /go.pos 0 def + { + go.cmdline go.pos add go.name strstr dup { + 1 sub /go.pos exch def + + go.cmdline go.pos iswordboundary + go.cmdline go.pos go.name length add iswordboundary + and { + go.cmdline go.pos add exit + } { + /go.pos go.pos 1 add def + } ifelse + } { + pop "" exit + } ifelse + } loop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/redrawmenu { + menu.visible.entries menu.texts length lt menu.scrollbar and { + /menu.vsb.height1 + menu.shift + menu.sb.height mul menu.texts length div + def + + /menu.vsb.height3 + menu.texts length menu.visible.entries menu.shift add sub + menu.sb.height mul menu.texts length div + def + + lightgray setcolor + menu.sb.x menu.sb.y menu.vsb.height1 add moveto + menu.sb.width menu.sb.height menu.vsb.height1 menu.vsb.height3 add sub + fillrect + + menu.vsb.height1 0 ne { + menu.sb.x menu.sb.y moveto + currentpoint menu.sb.width menu.vsb.height1 image + } if + + menu.vsb.height3 0 ne { + menu.sb.x menu.sb.y menu.sb.height menu.vsb.height3 sub add moveto + currentpoint menu.sb.width menu.vsb.height3 image + } if + + } if + + menu.text.normal setcolor + + /x menu.start.x def + /y menu.start.y def + + 0 1 menu.visible.entries 1 sub { + x y moveto currentpoint menu.bar.width menu.bar.height image + menu.texts exch menu.shift add get menuitemmap + menu.start.x + y menu.text.yofs add + moveto + currentfont exch font.large setfont show setfont + /y y menu.item.height add def + } for + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( entry status ) ==> ( ) +% +% status: +% false not selected +% true selected +% +/MenuSelect { + /menu.status exch def + + /menu.idx over def + + menu.shift sub + menu.item.height mul menu.start.y add + menu.start.x exch + moveto + + currentpoint + menu.status { + menu.bar.color setcolor + currenttransparency + 70 settransparency + menu.bar.width menu.bar.height + fillrect + settransparency + } { + currentpoint menu.bar.width menu.bar.height image + } ifelse + moveto + + menu.status { + menu.text.select + } { + menu.text.normal + } ifelse + setcolor + menu.texts menu.idx get menuitemmap + 0 menu.text.yofs rmoveto + currentfont exch font.large setfont show setfont + + menu.status { + % init boot options + keepbootoptions .undef eq { bootoptions.init } if + + % set help context + "main" help.setcontext + menu.texts menu.idx get + dup help.findpage "" eq { + pop + } { + help.setcontext + } ifelse + + % update installation modes menu + menu.idx video_modes.filter + menu.idx fulloptions.filter + menu.idx modes.filter + } if + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( text errorcode ) ==> ( ) +% errorcode: +% 0 normal info +% 1 fatal error +% 2 missing kernel +% 3 disk change +% 4 disk change failed +% + +/info.tmpmsg 127 string def + +/InfoBoxInit { + /info.type exch def + /info.msg exch def + + window.dialog + + info.type 1 eq { + dup .title.bg red put + dup .title txt_error_title put + dup .buttons + [ + button.reboot button.default actCloseInfo button.setaction + ] put + } { + dup .title txt_info_title put + dup .buttons + [ + button.ok button.default actCloseInfo button.setaction +% button.cancel button.notdefault actCloseInfo button.setaction + ] put + } ifelse + + syslinux info.type 3 eq and { + dup .title txt_change_disk_title put + 0 getinfo 1 add txt_insert_disk info.tmpmsg sprintf + /info.msg info.tmpmsg def + } if + + syslinux info.type 4 eq and { + dup .title txt_change_disk_title put + 1 getinfo 15 not and { + 0 getinfo 1 add + txt_insert_disk3 info.tmpmsg sprintf + } { + 0 getinfo 1 add 1 getinfo 1 add + txt_insert_disk2 info.tmpmsg sprintf + } ifelse + /info.msg info.tmpmsg def + } if + + dup .text info.msg put + + dup window.init + window.show + +} def + + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( time ) ==> ( ) +% /Timer { pop } def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( label correct_password ) ==> ( ) +% +/PasswordInit { + /password.key exch def pop + + /dia window.dialog def + + /password.dialog dia def + + dia .title txt_password_title put + dia .text "" put + + % Must all be of same size! + dia .ed.list 1 array put + dia .ed.buffer.list [ 31 string ] put + dia .ed.text.list [ txt_password ] put + + dia .ed.focus 0 put + + dia .ed.width 200 put + + dia .ed.font font.normal pwmode put + + dia .buttons + [ button.ok button.default actPassword button.setaction ] + put + + dia window.init + dia window.show + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( password ) ==> ( error ) +% +% error: +% true password ok +% false wrong password +% +% ****** FIXME: test result seems to be unused +% +/PasswordDone { + + password.key eq +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( text ) == > ( new_text ) +% If text is in menu.texts (it should be), return the corresponding item +% from menu.humans. Otherwise, return text as-is. +/menuitemmap { + 0 menu.texts { + 2 index eq { menu.humans over get rot pop exch exit } if + 1 add + } forall pop + translate + + % Remove ^ from the string; eventually, this should define hotkeys, but it + % doesn't yet. + dup length string /menuitemmap.text exch def + /menuitemmap.idx 0 def + { + dup '^' ne { + menuitemmap.text menuitemmap.idx rot put + /menuitemmap.idx inc + } { pop } ifelse + } forall + menuitemmap.text menuitemmap.idx 0 put + + menuitemmap.text +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( color0 color1 width height ) ==> ( ) +/drawborder { + currentpoint /db.y0 exch def /db.x0 exch def + + /db.y1 exch 1 sub db.y0 add def + /db.x1 exch 1 sub db.x0 add def + /db.col1 exch def + /db.col0 exch def + + db.x0 db.y1 moveto + + db.col0 setcolor + db.x0 db.y0 lineto db.x1 db.y0 lineto + + db.col1 setcolor + db.x1 db.y1 lineto db.x0 db.y1 lineto +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( color0 color1 color2 width height ) ==> ( ) +% draw frame with shadow +% color0: upper left, color1: lower right, color2: shadow +/drawborder3 { + currentpoint /db.y0 exch def /db.x0 exch def + + /db.y1 exch 1 sub db.y0 add def + /db.x1 exch 1 sub db.x0 add def + /db.col2 exch def + /db.col1 exch def + /db.col0 exch def + + db.x0 db.y1 moveto + + db.col0 setcolor + db.x0 db.y0 lineto db.x1 db.y0 lineto + + db.col1 setcolor + db.x1 db.y1 lineto db.x0 db.y1 lineto + + db.col2 -1 ne { + db.col2 setcolor + 1 1 rmoveto + db.x1 1 add db.y1 1 add lineto + db.x1 1 add db.y0 1 add lineto + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( color0 color1 width height ) ==> ( ) +/drawborder4 { + 3 index 4 1 roll rot dup 3 index 3 index + currentpoint 6 2 roll + 1 1 rmoveto drawborder + moveto drawborder +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% center text +% ( text width height ) ==> ( ) +/centertext { + 3 -1 roll strsize + 4 2 roll + 4 1 roll exch 4 1 roll sub 2 div neg 3 1 roll sub 2 div neg +} def + + +% Allocate and define a new color. +% +% ( palette ) ==> ( color ) +% +/newcolor { + colorbits 8 le { + newcolor.count .undef eq { /newcolor.count 0 def } if + max_image_colors newcolor.count add + dup rot setpalette + /newcolor.count newcolor.count 1 add def + } if + def +} def + + +/boot.pos.init { + /boot.label.len txt_bootoptions strsize pop def + /boot.pos { boot.label.len 10 add small_layout { 410 } { 510 } ifelse } def + /boot.ed.width screen.size pop boot.pos pop sub 20 sub def + /boot.ed.height fontheight 2 add def + + boot.ed .undef ne { + boot.ed 2 get free + boot.pos exch 10 add + boot.ed 0 rot put + boot.ed 1 rot put + % save background behind boot parameters field + boot.ed dup 0 get exch 1 get + over over moveto boot.ed.width boot.ed.height savescreen + boot.ed 2 rot put + } if +} def + +/init { + small_layout { + /head.x 70 def + /head.y 141 def + } { + /head.x 234 def + /head.y 185 def + } ifelse + + timeout.init + + % set default language + "lang" findfile dup { + /tmp over length 1 add 2 max string def + tmp exch { + dup ' ' eq over '\n' eq or { pop pop exit } if + over exch 0 exch put + 1 add + } forall + tmp dup setlang pop setkeymap + /lang.displayed true def + } { + pop + "en_US" dup setlang pop setkeymap + } ifelse + + font.large setfont + + /menu.text.xofs 10 def + /menu.text.yofs 2 def + /menu.item.height fontheight dup 12 div add def + /menu.bar.height fontheight menu.text.yofs dup add add def + + font.normal setfont + + /menu.text.normal lightblue def + /menu.text.select white def + /boot.text.options white def + /boot.text.normal white def + /infobox.bg lightgray def + /infobox.text.normal black def + + /menu.bar.color black def + + small_layout { + /frame1.pos { 80 208 } def + /frame1.size { 480 160 } def + /frame4.pos { 560 62 } def + } { + /frame1.pos { 160 288 } def + /frame1.size { 480 170 } def + /frame4.pos { 640 62 } def + } ifelse + + /frame4.size { 22 264 } def + + /menu.start.x menu.position.x def + /menu.start.y menu.position.y def + + /menu.bar.width frame1.size pop 20 sub def + /menu.max.entries 8 def + /menu.scrollbar false def + + boot.pos.init + + /boot.buf.size cmdlinelength def + /boot.buf boot.buf.size string def + + % no boot options line initially + /boot.show false def + + /ms.size { 22 22 } def + /ms.up { 0 480 } def + /ms.down { 23 480 } def + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Some special debug & test keys. +% +% ( key_in ) ==> ( key_out ) +% +/debug.input { + dup keyShiftF4 eq debug 3 ge and { + currentcolor white setcolor + currentpoint 0 0 moveto + 64 string biosmem "mem = %u " 2 index sprintf dup show free + moveto setcolor + pop 0 + } if + + dup keyShiftF3 eq syslinux and debug 3 ge and { + currentcolor white setcolor + currentpoint 0 0 moveto + "eject " print bootdrive eject print + moveto setcolor + pop 0 + } if + + dup keyShiftF5 eq syslinux and debug 3 ge and { + currentcolor white setcolor + currentpoint 100 0 moveto + bootdrive print + moveto setcolor + pop 0 + } if + + dup keyShiftF8 eq debug 3 ge and { + currentcolor white setcolor + + currentpoint 300 0 moveto + 0 memsize print "/" print print " " print + moveto + + currentpoint 300 20 moveto + 1 memsize print "/" print print " " print + moveto + + currentpoint 300 40 moveto + 2 memsize print "/" print print " " print + moveto + + setcolor + pop 0 + } if + + dup keyShiftF9 eq debug 3 ge and { + dumpmem + pop 0 + } if + + dup keyShiftF10 eq { + /debug debug 1 add def "" + pop 0 + } if + + dup keyShiftF11 eq { + /transp transp 0x10 sub 0 max def + pop 0 + } if + + dup keyF11 eq debug 1 ge and { + + dtrace + + 0 1 screen.size exch pop { + 0 1 screen.size pop { + over moveto + currentpoint 8 shl screen.size exch pop div 8 shl exch 8 shl screen.size pop div add + screen.size add currentpoint add sub 8 shl screen.size add div 2 div 16 shl add + setcolor + putpixel + } for + pop + } for + + pop 0 + } if + + dup keyF12 eq debug 3 ge and { + % mouse support testing + + 1 keepmode + + /mouse xxx def + red setcolor + mouse .undef eq { + 700 580 moveto "no mouse" show + } { + { + mouse getdword 16 shl 16 shr screen.size pop 2 div add + mouse getdword 16 shr neg screen.size exch pop 2 div add + moveto 4 4 fillrect + + mouse 4 add getdword 7 and + dup 1 and { red setcolor } if + dup 2 and { blue setcolor } if + dup 4 and { green setcolor } if + + 3 and 3 eq { exit } if + + } loop + } ifelse + pop 0 + } if + + dup keyShiftF12 eq { + /transp transp 0x10 add 0x100 min def + pop 0 + } if + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show exit popup. +% +% ( ) ==> ( ) +% +/exit_popup { + window.dialog + + dup .title txt_exit_title put + dup .text txt_exit_dialog put + dup .buttons [ + button.ok button.default actExit button.setaction + button.cancel button.notdefault actNothing button.setaction + ] put + dup window.init + window.show + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show help window. +% +% ( ) ==> ( ) +% +/show_help { + window.help + + dup window.init + window.show + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show dvd popup. +% +% ( ) ==> ( ) +% +/dvd_popup { + window.dialog + + dup .title txt_dvd_warning_title put + dup .text txt_dvd_warning2 put + dup .buttons [ +% button.eject button.default actEject actNoClose or button.setaction + button.continue button.default actNothing button.setaction + ] put + dup window.init + window.show + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Warn that we are about to install 32bit software on a 64bit system. +% +% ( ) ==> ( ) +% +/32bit_popup { + window.dialog + + dup .title "Cool computer, but..." put + dup .text "You are about to install 32-bit software on a 64-bit computer." put + dup .buttons [ + button.continue button.default actNothing button.setaction + ] put + dup window.init + window.show + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Warn that we are about to install 64bit software on a 32bit system. +% +% ( ) ==> ( ) +% +/64bit_popup { + window.dialog + + dup .title "Cool software, but..." put + dup .text "This is a 32-bit computer. You cannot use 64-bit software on it." put + dup .buttons [ + button.reboot button.default actReboot actNoClose or button.setaction + ] put + dup window.init + window.show + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Warn that we don't have enough memory. +% +% ( ) ==> ( ) +% +/nomem_popup { + window.dialog + + dup .title "Cool computer, but..." put + dup .text + "Sorry, but SUSE Linux 10.1 LiveCD needs at least 256MB main memory." + put + dup .buttons [ + button.reboot button.default actReboot actNoClose or button.setaction + ] put + dup window.init + window.show + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show "power off" popup. +% +% ( ) ==> ( ) +% +/power_off { + window.dialog + + dup .title txt_power_off_title put + dup .text txt_power_off put + dup .buttons [ + button.ok button.notdefault actPowerOff actNoClose or button.setaction + button.cancel button.default actNothing button.setaction + ] put + dup window.init + window.show + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Search for option in cmdline. +% Returns .undef if not found. +% +% ( cmdline option_name ) ==> ( option_start ) +% +/bootopt.find { + /bo.opt exch def + /bo.cmdline exch def + + { + bo.cmdline bo.opt strstr + dup { + dup 1 eq { + true + } { + dup 2 sub bo.cmdline exch get ' ' eq + } ifelse + + { + bo.cmdline over bo.opt length add 1 sub get + dup '=' eq + over ' ' eq or + exch 0 eq or + } { + false + } ifelse + + bo.cmdline rot add exch + + { + 1 sub exit + } { + /bo.cmdline exch def + } ifelse + } { + pop + .undef exit + } ifelse + } loop + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Global variables. +% + +/transp 0 def + +640 480 16 findmode setmode not { + 640 480 32 findmode setmode not { + 640 400 4 findmode setmode not { + false .end + } if + } if +} if + +% /with_transp vscreen.size exch pop screen.size exch pop div 1 gt colorbits 8 gt and def + +/clip.size { screen.size } def + +/small_layout screen.size pop 640 eq def + +/access.file "access.pcx" findfile def +access.file dup .undef ne { + setimage image.size /access.height exch def /access.width exch def +} { + pop /access.height .undef def /access.height .undef def +} ifelse + +"splash.pcx" findfile +dup .undef eq { pop "back.jpg" findfile } if +/background.file over def setimage loadpalette +/max_image_colors image.colors def + +% 7 dup 0xffffff setpalette setcolor + +% color & font definitions must be global + +/black 0x000000 newcolor +/white 0xffffff newcolor +/blue 0x0000a0 newcolor +/red 0xc00000 newcolor +/green 0x009000 newcolor +/yellow 0xffff20 newcolor +/lightgray 0xd8deed newcolor +/dotcolor 0xa9bbcd newcolor +/lightdotcolor 0xeff2f6 newcolor +/somegreen 0x78a424 newcolor + +/lightblue 0x7da3d1 def + +%% include theme_colors.inc +%% include theme_positions.inc + +/font.normal "16x16.fnt" findfile def +/font.large font.normal def + +/cmdline.hidden cmdlinelength string def +/cmdline.shown cmdlinelength string def + +/debug 0 def + +check_arch_boot_dir + + + diff --git a/dia_access.inc b/dia_access.inc new file mode 100644 index 0000000..0796d64 --- /dev/null +++ b/dia_access.inc @@ -0,0 +1,201 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Accessibility mode selector. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +/access.option .undef def + +/.access.none 0 def +/.access.v1 1 def +/.access.v2 2 def +/.access.v3 3 def +/.access.brltty 4 def +/.access.m1 5 def +/.access.m2 6 def + +/access.alloptionnames [ + .undef + "v1" "v2" "v3" "brltty" + "m1" "m2" +] def + +/access.optionnames [ access.alloptionnames { } forall ] def + +% Custom kernel options. Feel free to extend as needed. Keep this in sync +% with MenuInit. +/access.options.v1 "access=v1" def + +/access.alltexts [ + /txt_access_none + /txt_access_v1 /txt_access_v2 /txt_access_v3 /txt_access_brltty + /txt_access_m1 /txt_access_m2 +] def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialise accessibility menu. +% +% ( ) ==> ( ) +% +/access.init { + /xmenu.access .xm_size array def + /xmenu xmenu.access def + + xmenu .xm_current .access.none put + + xmenu .xm_list [ + access.optionnames { + 0 1 access.alloptionnames length 1 sub { + over access.alloptionnames 2 index get eq { + access.alltexts exch get exch pop exit + } { + pop + } ifelse + } for + } forall + ] put + + /access.optionmap [ + 0 1 access.optionnames length 1 sub { + 0 1 access.alloptionnames length 1 sub { + access.optionnames 2 index get access.alloptionnames 2 index get eq { + [ 2 index rot ] exch exit + % leaves [ optionindex alloptionindex ] optionindex + } { + pop + } ifelse + } for + pop + } for + ] def + + xmenu .xm_title /txt_access put + + /access.soundfiles [ + access.optionnames { + dup .undef ne { + /access.tmpfilename 32 string def + "access%s.mod" access.tmpfilename sprintf + access.tmpfilename findfile + } if + } forall + ] def + + pmenu.init +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update accessibility status. +% +% ( ) ==> ( ) +% +/access.update { + /xmenu xmenu.access def + + access.optionnames xmenu .xm_current get get dup .undef eq { + pop + /access.option .undef def + } { + dup "brltty" eq { + pop /access.option "braille=ask" def + } { + dup "v1" eq { + pop /access.option access.options.v1 def + } { + dup length 7 add string /access.option exch def + "access=%s" access.option sprintf + } ifelse + } ifelse + } ifelse + + /window.action actRedrawPanel def + + pmenu.update +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Select an accessibility menu item. +% +% ( ) ==> ( ) +% +/access.select { + /xmenu xmenu.access def + + access.soundfiles xmenu .xm_current get get dup .undef ne { + /player.access 1 def + player.access exch mod.load + player.access 0 mod.play + } { pop } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Handle keyboard input. +% +% ( key_in ) ==> ( key_out ) +% +/access.input { + dup 0 eq { return } if + + dup 0xff and '0' sub + dup 0 lt { return } if + + dup access.optionmap { + dup 1 get 2 index eq { + 0 get dup xmenu .xm_list get length lt { + xmenu.select + pop + 0 + } { + pop + } ifelse + } { + pop + } ifelse + } forall +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show window. +% +% ( ) => ( ) +% +/panel.access { + "access" help.setcontext + + window.xmenu + dup .xmenu xmenu.access put + dup .xmenu.update /access.update put + dup .xmenu.select /access.select put + dup .xmenu.input /access.input put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.access.width { + /xmenu xmenu.access def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.access.update { + /xmenu xmenu.access def + + pmenu.panel.update +} def diff --git a/dia_audio.inc b/dia_audio.inc new file mode 100644 index 0000000..3ad1b3e --- /dev/null +++ b/dia_audio.inc @@ -0,0 +1,95 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% audio selection dialog. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Some global vars. +% +/audio.use false def +/audio.default 0 def +/audio.changed false def + +/audio.values [ + "alsa" + "pulseaudio" +] def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Build menu list. +% +% ( ) ==> ( ) +% +/audio.init { + /xmenu.audio .xm_size array def + + /xmenu xmenu.audio def + + xmenu .xm_list [ + "ALSA" + "PulseAudio" + ] put + + xmenu .xm_current 0 put + xmenu .xm_title /txt_audio put + + pmenu.init +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update audio selection menu. +% +% ( ) ==> ( ) +% +/audio.update { + /xmenu xmenu.audio def + + /window.action actRedrawPanel def + + pmenu.update +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show audio selection menu. +% +% ( ) => ( ) +% +/panel.audio { + "audio" help.setcontext + + window.xmenu + dup .xmenu xmenu.audio put + dup .xmenu.update /audio.update put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.audio.width { + /xmenu xmenu.audio def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.audio.update { + /xmenu xmenu.audio def + + pmenu.panel.update +} def + + diff --git a/dia_fulloptions.inc b/dia_fulloptions.inc new file mode 100644 index 0000000..20100a0 --- /dev/null +++ b/dia_fulloptions.inc @@ -0,0 +1,227 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Panel boot options selector. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +/fulloptions.option .undef def +/fulloptions.composite .undef def +/xmenu.fulloptions .undef def + +/.fulloptions.expert 0 def +/.fulloptions.acpi_off 1 def +/.fulloptions.noapic 2 def +/.fulloptions.nolapic 3 def +/.fulloptions.edd_on 4 def +/.fulloptions.nodmraid 5 def +/.fulloptions.nomodeset 6 def +/.fulloptions.nox 7 def +/.fulloptions.docache 8 def +/.fulloptions.nocomposite 9 def + +% These strings are intentionally not translatable. +/txt_acpi_off "acpi=off" def +/txt_noapic "noapic" def +/txt_nolapic "nolapic" def +/txt_edd_on "edd=on" def +/txt_nodmraid "nodmraid" def +/txt_nomodeset "nomodeset" def +/txt_nox "No-X" def +/txt_docache "RAM" def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialise boot options menu. +% +% ( ) ==> ( ) +% +/fulloptions.init { + /xmenu.fulloptions .xm_size array def + /xmenu xmenu.fulloptions def + + is_live { + /.fulloptions.acpi_off dec + /.fulloptions.noapic dec + /.fulloptions.nolapic dec + /.fulloptions.edd_on dec + /.fulloptions.nodmraid dec + /.fulloptions.nomodeset dec + /.fulloptions.nox dec + /.fulloptions.docache dec + /.fulloptions.nocomposite dec + xmenu .xm_current .fulloptions.acpi_off put + } { + xmenu .xm_current .fulloptions.expert put + } ifelse + + xmenu .xm_list [ + is_live not { /txt_expert_mode } if + /txt_acpi_off /txt_noapic /txt_nolapic /txt_edd_on /txt_nodmraid + /txt_nomodeset + /txt_nox + /txt_docache + /txt_no_composite + ] put + /fulloptions.label_no_composite true def + + xmenu .xm_title /txt_other_options put + xmenu .xm_check 1 put + xmenu .xm_allselected xmenu .xm_list get length array put + 0 1 xmenu .xm_list get length 1 sub { + xmenu .xm_allselected get exch false put + } for + + pmenu.init + menu.entry fulloptions.filter +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Filter displayed options when a menu item changes. +% +% ( index ) ==> ( ) +% +/fulloptions.filter { + xmenu.fulloptions .undef eq { pop return } if + fulloptions.composite .undef eq { pop return } if + fulloptions.composite length 0 eq { pop return } if + + menu.labels exch get + + dup length 3 add string /fulloptions.tmp.label exch def + " %s " fulloptions.tmp.label sprintf + + /fulloptions.label_no_composite false def + fulloptions.composite { + dup length 3 add string /fulloptions.tmp.check exch def + " %s " fulloptions.tmp.check sprintf + fulloptions.tmp.check fulloptions.tmp.label strstr 0 ne + { /fulloptions.label_no_composite true def } if + fulloptions.tmp.check free + } forall + fulloptions.tmp.label free + + xmenu + /xmenu xmenu.fulloptions def + + xmenu .xm_list get free + xmenu .xm_list [ + /txt_acpi_off /txt_noapic /txt_nolapic /txt_edd_on /txt_nodmraid + /txt_nomodeset + /txt_nox + /txt_docache + fulloptions.label_no_composite { /txt_no_composite } if + ] put + pmenu.init + + /xmenu exch def % restore + +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Change boot options status. +% +% ( ) ==> ( ) +% +/fulloptions.change { + /xmenu xmenu.fulloptions def + + /fulloptions.option 0 string def + + xmenu .xm_allselected get + 0 1 xmenu .xm_allselected get length 1 sub { + over over get { + .undef + is_live not { over .fulloptions.expert eq { pop "priority=low" } if } if + over .fulloptions.acpi_off eq { pop "acpi=off" } if + over .fulloptions.noapic eq { pop "noapic" } if + over .fulloptions.nolapic eq { pop "nolapic" } if + over .fulloptions.edd_on eq { pop "edd=on" } if + over .fulloptions.nodmraid eq { pop "nodmraid" } if + over .fulloptions.nomodeset eq { pop "nomodeset" } if + over .fulloptions.nox eq { pop "nox" } if + over .fulloptions.docache eq { pop "docache" } if + dup { + % append new option string + dup length fulloptions.option length add 1 add string + /fulloptions.newoption exch def + dup fulloptions.option "%s %s" fulloptions.newoption sprintf + fulloptions.option free + /fulloptions.option fulloptions.newoption def + } if + pop + } if + pop + } for + pop + + fulloptions.option length { + /fulloptions.option inc + } { + /fulloptions.option .undef def + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update boot options status. +% +% ( ) ==> ( ) +% +/fulloptions.update { + fulloptions.change + /window.action actRedrawPanel def + pmenu.update +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show window. +% +% ( ) => ( ) +% +/panel.fulloptions { + "fulloptions" help.setcontext + + window.xmenu + dup .xmenu xmenu.fulloptions put + dup .xmenu.change /fulloptions.change put + dup .xmenu.update /fulloptions.update put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.fulloptions.width { + /xmenu xmenu.fulloptions def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.fulloptions.update { + /xmenu xmenu.fulloptions def + + pmenu.panel.update +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Get composite option +% +% ( ) => ( str ) +% +/fulloptions.cmd_composite { + fulloptions.label_no_composite { + xmenu.fulloptions .xm_allselected get .fulloptions.nocomposite get { "composite:off" } { "" } ifelse + } { "" } ifelse +} def diff --git a/dia_help.inc b/dia_help.inc new file mode 100644 index 0000000..1b2664d --- /dev/null +++ b/dia_help.inc @@ -0,0 +1,54 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Panel help entry. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show help window. +% +% ( ) => ( ) +% +/panel.help { + help.context "opt" eq boot.ed 5 get .undef ne and { + findbootoption + help.mapcontext + dup help.findpage + "" eq { pop } { help.setcontext } ifelse + } if + show_help +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of help entry. +% +% ( ) => ( width ) +% +/panel.help.width { + txt_help strsize pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.help.update { + panel.text.moveto + + txt_help show +} def + +/panel.tab.update { + panel.text.moveto + txt_bootoptions show +} def + +/panel.tab.width { + txt_bootoptions strsize pop +} def + +/panel.help { +} def diff --git a/dia_keymap.inc b/dia_keymap.inc new file mode 100644 index 0000000..b4bc295 --- /dev/null +++ b/dia_keymap.inc @@ -0,0 +1,99 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Keymap selection dialog. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +/keymap.inited false def +/keymap.explicit false def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Build keymap list. +% +% ( ) ==> ( ) +% +/keymap.init { + /xmenu.keymap .xm_size array def + /xmenu xmenu.keymap def + /keymap.inited true def + + xmenu .xm_current 0 put + xmenu .xm_list [ keymaps { .km.display get } forall ] put + + xmenu .xm_title /txt_keymap put + + % setkeymap is called by init before panel.init, so config.keymap must be + % set by now + keymap.langchanged + + pmenu.init +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Language changed; update keymap. +% +% ( ) ==> ( ) +% +/keymap.langchanged { + keymap.inited { + /keymap.tmp.cnt 0 def + keymaps { + config.keymap eq { + xmenu.keymap .xm_current keymap.tmp.cnt put exit + } if + /keymap.tmp.cnt inc + } forall + } if +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update keymap. +% +% ( ) ==> ( ) +% +/keymap.update { + /xmenu xmenu.keymap def + + /config.keymap keymaps xmenu .xm_current get get def + /keymap.explicit true def + + window.action actRedraw eq { pmenu.update } if +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show keymap menu. +% +% ( ) => ( ) +% +/panel.keymap { + "keymap" help.setcontext + + window.xmenu + dup .xmenu xmenu.keymap put + dup .xmenu.update /keymap.update put + dup window.init + window.show +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.keymap.width { + /xmenu xmenu.keymap def + + pmenu.width +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.keymap.update { + /xmenu xmenu.keymap def + + pmenu.panel.update +} def diff --git a/dia_lang.inc b/dia_lang.inc new file mode 100644 index 0000000..180912c --- /dev/null +++ b/dia_lang.inc @@ -0,0 +1,233 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Language selection dialog. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Some global vars. +% + +% fallback if there is no "langlist" +/lang.items [ "en_US" ] def +/lang.names [ "English (United States)" ] def +/lang.displayed false def + +/.la.language 0 def +/.la.locale 1 def +/.la.name 2 def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Get language name. +% +% Returns locale if not found. +% +% ( locale ) ==> ( name ) +% +/lang.getdefname { + lang.defaultnames { + dup .la.language get 2 index eq { .la.name get exch pop exit } { pop } ifelse + } forall +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Get locale code (ll_CC). +% +% Returns locale if not found. +% +% ( locale ) ==> ( ll_CC ) +% +/lang.getlocale { + lang.defaultnames { + dup .la.language get 2 index eq { .la.locale get exch pop exit } { pop } ifelse + } forall +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Parse "langlist" file. +% +% ( ) ==> ( ) +% +/lang.parsedata { + /lang.default 0 def + + "langlist" findfile dup { /lang.data exch def } { pop return } ifelse + + /la.tmp.datalen lang.data length def + /la.tmp.str lang.data cvs def + + la.tmp.datalen 0 eq { return } if + la.tmp.str la.tmp.datalen 1 sub get '\n' ne { return } if + + '\n' seteotchar + + /lang.items [ + + /la.tmp.len 0 def + /la.tmp.cnt 0 def + { + la.tmp.str la.tmp.len add strdup + dup dup length 0 put + /la.tmp.len over length 1 add la.tmp.len add def + + dup 0 get '*' eq { 1 add /lang.default la.tmp.cnt def } if + + la.tmp.len la.tmp.datalen ge { exit } if + + /la.tmp.cnt inc + } loop + + ] def + + ' ' seteotchar + + /lang.names [ + + lang.items { + + dup dup length add + + dup 0 get { + dup 0 0 put 1 add + exch pop + } { + pop lang.getdefname + } ifelse + + } forall + + ] def + + 0 seteotchar + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Build language list. +% +% ( ) ==> ( ) +% +/lang.init { + /xmenu.lang .xm_size array def + /xmenu xmenu.lang def + + lang.parsedata + + xmenu .xm_current lang.default put + xmenu .xm_list lang.names put + + xmenu .xm_title /txt_language put + + % make menu smaller if there are more than 19 language entries + %lang.items length 19 gt { + % xmenu .xm_vspace 2 put + %} if + + % start with current lang + + /la.tmp.found false def + + /la.tmp.cnt 0 def + lang.items { + config.lang eq { + xmenu .xm_current la.tmp.cnt put /la.tmp.found true def exit + } if + /la.tmp.cnt inc + } forall + + la.tmp.found not { + % Try without the country code. + config.lang "_" strstr dup 0 ne { + 1 sub + config.lang strdup dup rot 0 put + /la.tmp.cnt 0 def + lang.items { + over eq { + xmenu .xm_current la.tmp.cnt put exit + } if + /la.tmp.cnt inc + } forall + free + } { + pop + } ifelse + } if + + pmenu.init +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update language. +% +% ( ) ==> ( ) +% +/lang.update { + /xmenu xmenu.lang def + + lang.items xmenu .xm_current get get + dup + setlang { /window.action actRedraw def } if + setkeymap + keymap.langchanged + + window.action actRedraw eq { pmenu.update } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Clean up after language menu has been undrawn. +% +% ( ) => ( ) +% +/lang.cleanup { + /lang.displayed true def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show language menu. +% +% ( ) => ( ) +% +/panel.lang { + "keytable" help.setcontext + + window.xmenu + dup .xmenu xmenu.lang put + dup .xmenu.update /lang.update put + dup .xmenu.cleanup /lang.cleanup put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.lang.width { + /xmenu xmenu.lang def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.lang.update { + /xmenu xmenu.lang def + + pmenu.panel.update +} def + + diff --git a/dia_modes.inc b/dia_modes.inc new file mode 100644 index 0000000..c617eef --- /dev/null +++ b/dia_modes.inc @@ -0,0 +1,213 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Panel installation modes selector. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +/modes.selected.append .undef def +/modes.selected.replace .undef def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialise installation modes menu. +% +% ( ) ==> ( ) +% +/modes.init { + /xmenu.modes .xm_size array def + /xmenu xmenu.modes def + + xmenu .xm_current 0 put + + /modes.gfxconfig listgfxconfig def + + /modes.rawlabels [ + modes.gfxconfig { + dup 0 get 6 strndup dup "label " eq exch free { 1 get } { pop } ifelse + } forall + ] def + /modes.append [ + modes.gfxconfig { + 0 get /modes.tmp.key exch def + modes.tmp.key 6 strndup dup "label " eq exch free { + modes.tmp.key 6 add dup length 8 add string /modes.tmp.str exch def + "append %s" modes.tmp.str sprintf + modes.tmp.str getgfxconfig + modes.tmp.str free + } if + } forall + ] def + /modes.replace [ + modes.gfxconfig { + 0 get /modes.tmp.key exch def + modes.tmp.key 6 strndup dup "label " eq exch free { + modes.tmp.key 6 add dup length 9 add string /modes.tmp.str exch def + "replace %s" modes.tmp.str sprintf + modes.tmp.str getgfxconfig + modes.tmp.str free + } if + } forall + ] def + /modes.applies [ + modes.gfxconfig { + 0 get /modes.tmp.key exch def + modes.tmp.key 6 strndup dup "label " eq exch free { + modes.tmp.key 6 add dup length 9 add string /modes.tmp.str exch def + "applies %s" modes.tmp.str sprintf + modes.tmp.str getgfxconfig + modes.tmp.str free + } if + } forall + ] def + modes.rawlabels length 0 eq { + /modes.rawlabels [ txt_mode_normal ] def + /modes.append [ .undef ] def + /modes.replace [ .undef ] def + /modes.applies [ .undef ] def + } if + /modes.map .undef def + + menu.entry modes.filter + + xmenu .xm_title /txt_modes put +} def + + +/mydebug { + 380 400 moveto -300 0 rmoveto + currentpoint 300 fontheight image + 380 400 moveto menu.humans menu.entry get showright + + 380 420 moveto -300 0 rmoveto + currentpoint 300 fontheight image + menu.texts menu.entry get "#%s#" timeout.buf sprintf + 380 420 moveto timeout.buf showright + + /my.buf 128 string def + 0 440 moveto + currentpoint 640 fontheight image + menu.args menu.entry get "#%s#" my.buf sprintf + 0 440 moveto my.buf show + + 380 380 moveto -300 0 rmoveto + currentpoint 300 fontheight image + 380 380 moveto menu.labels menu.entry get showright + +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update installation modes status. +% +% ( ) ==> ( ) +% +/modes.update { + /xmenu xmenu.modes def + + modes.map xmenu .xm_current get get + modes.append over get /modes.selected.append exch def + modes.replace over get /modes.selected.replace exch def + + /window.action actRedrawPanel def + + pmenu.update +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Filter displayed modes when a menu item changes. +% +% ( index ) ==> ( ) +% +/modes.filter { + %mydebug + + modes.rawlabels .undef eq { pop return } if + + menu.labels exch get + dup length 3 add string /modes.tmp.label exch def + " %s " modes.tmp.label sprintf + + xmenu % save + /xmenu xmenu.modes def + + modes.map { + /modes.tmp.oldidx modes.map xmenu .xm_current get get def + } { + /modes.tmp.oldidx .undef def + } ifelse + + modes.map free + % mapping of current menu index to underlying option index + /modes.map [ + 0 1 modes.rawlabels length 1 sub { + modes.applies over get dup .undef ne { + dup length 3 add string /modes.tmp.applies exch def + " %s " modes.tmp.applies sprintf + modes.tmp.applies modes.tmp.label strstr 0 eq { pop } if + modes.tmp.applies free + } { + pop + } ifelse + } for + ] def + + modes.tmp.label free + + xmenu .xm_list get free + xmenu .xm_list [ + modes.map { modes.rawlabels exch get translate } forall + ] put + + xmenu .xm_current 0 put + 0 1 modes.map length 1 sub { + modes.map over get modes.tmp.oldidx eq { + xmenu .xm_current rot put exit + } { + pop + } ifelse + } for + + pmenu.init + + /xmenu exch def % restore +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show window. +% +% ( ) ==> ( ) +% +/panel.modes { + "modes" help.setcontext + + window.xmenu + dup .xmenu xmenu.modes put + dup .xmenu.update /modes.update put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.modes.width { + /xmenu xmenu.modes def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.modes.update { + /xmenu xmenu.modes def + + pmenu.panel.update +} def diff --git a/dia_options.inc b/dia_options.inc new file mode 100644 index 0000000..22fe788 --- /dev/null +++ b/dia_options.inc @@ -0,0 +1,30 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Panel 'more options' entry. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show help window. +% +% ( ) => ( ) +% +/panel.options { + /panel panel.full def + + boot.show not { + /boot.show true def + boot.setup + + boot.window .color.fg get setcolor + boot.window .ed.font get setfont + + boot.ed 3 get + boot.ed over edit.init + "" ne { boot.ed ' ' edit.input } if + } if + + main.redraw + + panel.fulloptions +} def diff --git a/dia_profile.inc b/dia_profile.inc new file mode 100644 index 0000000..61c2e24 --- /dev/null +++ b/dia_profile.inc @@ -0,0 +1,139 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Profile selection dialog. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Some global vars. +% + +% fallback if we can't parse "profiles" +/profile.options [ "" ] def +/profile.items [ "Broken Profiles" ] def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Parse "profiles" file. +% +% ( ) ==> ( ) +% +/profile.parsedata { + /pf.tmp.datalen profile.data length def + /pf.tmp.str profile.data cvs def + + /profile.default 0 def + + pf.tmp.datalen 0 eq { return } if + pf.tmp.str pf.tmp.datalen 1 sub get '\n' ne { return } if + + '\n' seteotchar + + /profile.items [ + + /pf.tmp.len 0 def + /pf.tmp.cnt 0 def + { + pf.tmp.str pf.tmp.len add strdup + dup dup length 0 put + /pf.tmp.len over length 1 add pf.tmp.len add def + + dup 0 get '*' eq { 1 add /profile.default pf.tmp.cnt def } if + + pf.tmp.len pf.tmp.datalen ge { exit } if + + /pf.tmp.cnt inc + } loop + + ] def + + ' ' seteotchar + + /profile.options [ + + profile.items { + dup length add + dup 0 0 put + 1 add + } forall + + ] def + + 0 seteotchar + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Build profile list. +% +% ( ) ==> ( ) +% +/profile.init { + /xmenu.profile .xm_size array def + /xmenu xmenu.profile def + + profile.parsedata + + xmenu .xm_current profile.default put + xmenu .xm_list profile.items put + + pmenu.init +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update profile. +% +% ( ) ==> ( ) +% +/profile.update { + /xmenu xmenu.profile def + + /window.action actRedrawPanel def + + pmenu.update +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show profile menu. +% +% ( ) => ( ) +% +/panel.profile { + "profile" help.setcontext + + window.xmenu + dup .xmenu xmenu.profile put + dup .xmenu.update /profile.update put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.profile.width { + /xmenu xmenu.profile def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.profile.update { + /xmenu xmenu.profile def + + pmenu.panel.update +} def + + diff --git a/dia_resolution.inc b/dia_resolution.inc new file mode 100644 index 0000000..caeb72e --- /dev/null +++ b/dia_resolution.inc @@ -0,0 +1,117 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Resolution mode selector. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +/resolution.option .undef def + +% Custom kernel options. Feel free to extend as needed. Keep this in sync +% with MenuInitj + +/resolution.auto 0 def + +/resolution.alltexts [ + "Auto" "640x480" "800x480" "800x600" "1024x576" + "1024x600" "1024x768" "1200x800" "1280x720" + "1280x768" "1280x800" "1280x1024" "1360x768" + "1366x768" "1368x768" "1400x1050" "1440x900" + "1600x768" "1600x900" "1600x1200" "1680x945" + "1680x1050" "1920x1080" "1920x1200" "2048x1152" + "2560x1440" "2560x1600" +] def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialise resolutionibility menu. +% +% ( ) ==> ( ) +% +/resolution.init { + /xmenu.resolution .xm_size array def + /xmenu xmenu.resolution def + + xmenu .xm_current resolution.auto put + + xmenu .xm_list [ + resolution.alltexts { + exec + } forall + ] put + + xmenu .xm_title /txt_resolution put + xmenu .xm_current resolution.auto put + + pmenu.init +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update accessibility status. +% +% ( ) ==> ( ) +% +/resolution.update { + /xmenu xmenu.resolution def + + /window.action actRedrawPanel def + + pmenu.update +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show window. +% +% ( ) => ( ) +% +/panel.resolution { + "resolution" help.setcontext + + window.xmenu + dup .xmenu xmenu.resolution put + dup .xmenu.update /resolution.update put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.resolution.width { + /xmenu xmenu.resolution def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.resolution.update { + /xmenu xmenu.resolution def + + pmenu.panel.update +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Recalculate panel entry. +% +% ( panel ) => ( ) +/panel.resolution.recalculate { + /xmenu xmenu.resolution def + + panel.text.moveto + xmenu.sizes + xmenu .xm_panel_x currentpoint pop xmenu.hspace sub put + % try to ensure that the menu doesn't overflow the screen + xmenu .xm_x + xmenu .xm_panel_x get + screen.size pop xmenu.columns xmenu.widthupto 10 add sub + min put +} def diff --git a/dia_video.inc b/dia_video.inc new file mode 100644 index 0000000..a834035 --- /dev/null +++ b/dia_video.inc @@ -0,0 +1,204 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Video mode selection dialog. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Some global vars. +% +% video mode array fields +/.vm_mode 0 def +/.vm_width 1 def +/.vm_height 2 def +/.vm_depth 3 def + +%% include dia_resolution.inc + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Create sort key for video modes. +% Supports up to 16383x16383x56 in multiples of 8 bits of depth. +% +% ( vm_index ) ==> ( sort_index ) +% +/vmsortindex { + video.modes.list exch get + dup + .vm_width get 14 shl + over .vm_height get add 3 shl + exch .vm_depth get 3 shr add +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Swap video mode entries. +% (Helper for video mode sorting.) +% +% ( vm_index_1 vm_index_2 ) ==> ( ) +% +/vmsortexch { + over video.modes.list exch get + over video.modes.list exch get + video.modes.list + 5 -1 roll rot put + video.modes.list 3 1 roll put +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Build video mode list. +% +% ( ) ==> ( ) +% +/video.init { + /xmenu.video .xm_size array def + + /xmenu xmenu.video def + + % build list of video modes + /video.modes.list [ + [ -1 0 0 0 ] % special: default VGA mode + + 0 1 videomodes { + videomodeinfo dup .undef eq { + pop pop pop pop + } { + [ + over 0xbfff and 6 2 roll + 0x4000 and % fb support + over 0x10 ge and % >= 16 color bits + 2 index 400 ge and % height >= 400 + 3 index 600 ge and % width >= 600 + { ] } { pop pop pop pop pop } ifelse + } ifelse + } for + + ] def + + % sort video.modes.list + + video.modes.list length 3 gt { + 0 1 video.modes.list length 2 sub { + dup 1 add 1 video.modes.list length 1 sub { + over vmsortindex over vmsortindex gt { + over over vmsortexch + } if + pop + } for + pop + } for + } if + + % uniquify video.modes.list + + video.modes.list length 1 gt { + /video.modes.list [ + video.modes.list 0 get + 1 1 video.modes.list length 1 sub { + video.modes.list over 1 sub get + video.modes.list 2 index get + + over .vm_width get over .vm_width get ne + 2 index .vm_height get 2 index .vm_height get ne or + rot .vm_depth get rot .vm_depth get ne or { + video.modes.list exch get + } { + pop + } ifelse + } for + ] def + } if + + % create mode strings + + /video.modes.text [ + video.modes.list { + dup .vm_width get + dup 0 eq { + pop pop "VGA" + } { + over .vm_depth get rot .vm_height get rot + "%d x %d x %d" 32 string dup 6 1 roll sprintf + } ifelse + } forall + ] def + + % add to menu + + xmenu .xm_list video.modes.text put + + % select largest mode the monitor supports + + monitorsize exch 800 max exch 600 max % at least 800x600 + + xmenu .xm_current 0 put + % video.modes.list { + % dup .vm_width get 3 index le + % exch .vm_height get 3 index le and { + % xmenu .xm_current over over get 1 add put + % } { + % exit + % } ifelse + % } forall + + pop pop + + pmenu.init +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update video mode. +% +% ( ) ==> ( ) +% +/video.update { + /xmenu xmenu.video def + + /window.action actRedrawPanel def + + pmenu.update +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show video menu. +% +% ( ) => ( ) +% +/panel.video { + "videomode" help.setcontext + + window.xmenu + dup .xmenu xmenu.video put + dup .xmenu.update /video.update put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of video entry. +% +% ( ) => ( width ) +% +/panel.video.width { + /xmenu xmenu.video def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.video.update { + /xmenu xmenu.video def + + pmenu.panel.update +} def + + diff --git a/dia_videomodes.inc b/dia_videomodes.inc new file mode 100644 index 0000000..7497dd1 --- /dev/null +++ b/dia_videomodes.inc @@ -0,0 +1,212 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Panel installation video modes selector. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +/video_modes.selected.append .undef def +/video_modes.selected.replace .undef def +/video_modes.submenu.idx 0 def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialise installation video modes menu. +% +% ( ) ==> ( ) +% +/video_modes.init { + /xmenu.video_modes .xm_size array def + /xmenu xmenu.video_modes def + + xmenu .xm_current 0 put + + /video_modes.gfxconfig listgfxconfig def + + /video_modes.rawlabels [ + video_modes.gfxconfig { + dup 0 get 6 strndup dup "label " eq exch free { 1 get } { pop } ifelse + } forall + /video_modes.submenu.resolution + ] def + /video_modes.append [ + video_modes.gfxconfig { + 0 get /video_modes.tmp.key exch def + video_modes.tmp.key 6 strndup dup "label " eq exch free { + video_modes.tmp.key 6 add dup length 8 add string /video_modes.tmp.str exch def + "append %s" video_modes.tmp.str sprintf + video_modes.tmp.str getgfxconfig + video_modes.tmp.str free + } if + } forall + .undef + ] def + /video_modes.replace [ + video_modes.gfxconfig { + 0 get /video_modes.tmp.key exch def + video_modes.tmp.key 6 strndup dup "label " eq exch free { + video_modes.tmp.key 6 add dup length 9 add string /video_modes.tmp.str exch def + "replace %s" video_modes.tmp.str sprintf + video_modes.tmp.str getgfxconfig + video_modes.tmp.str free + } if + } forall + .undef + ] def + /video_modes.applies [ + video_modes.gfxconfig { + 0 get /video_modes.tmp.key exch def + video_modes.tmp.key 6 strndup dup "label " eq exch free { + video_modes.tmp.key 6 add dup length 9 add string /video_modes.tmp.str exch def + "applies %s" video_modes.tmp.str sprintf + video_modes.tmp.str getgfxconfig + video_modes.tmp.str free + } if + } forall + .undef + ] def + + video_modes.rawlabels length 1 eq { + /video_modes.rawlabels [ /txt_mode_normal /txt_resolution ] def + /video_modes.append [ .undef .undef ] def + /video_modes.replace [ .undef .undef ] def + /video_modes.applies [ .undef .undef ] def + } if + /video_modes.map .undef def + + menu.entry video_modes.filter + + xmenu .xm_title /txt_videodrv put + resolution.init + +} def + + +/video_modes.submenu.resolution.buf 64 string def +/video_modes.submenu.resolution { + /txt_resolution exec "\x09%s" video_modes.submenu.resolution.buf sprintf + video_modes.submenu.resolution.buf +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Update installation modes status. +% +% ( ) ==> ( ) +% +/video_modes.update { + /xmenu xmenu.video_modes def + xmenu .xm_current get video_modes.submenu.idx eq { + xmenu 0 xmenu.oldentry put + panel.resolution + } { + video_modes.map xmenu .xm_current get get + video_modes.append over get /video_modes.selected.append exch def + video_modes.replace over get /video_modes.selected.replace exch def + + /window.action actRedrawPanel def + + pmenu.update + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Filter displayed modes when a menu item changes. +% +% ( index ) ==> ( ) +% +/video_modes.filter { + video_modes.rawlabels .undef eq { pop return } if + + menu.labels exch get + dup length 3 add string /video_modes.tmp.label exch def + " %s " video_modes.tmp.label sprintf + + xmenu % save + /xmenu xmenu.video_modes def + + video_modes.map { + /video_modes.tmp.oldidx video_modes.map xmenu .xm_current get get def + } { + /video_modes.tmp.oldidx .undef def + } ifelse + + video_modes.map free + % mapping of current menu index to underlying option index + /video_modes.map [ + 0 1 video_modes.rawlabels length 1 sub { + video_modes.applies over get dup .undef ne { + dup length 3 add string /video_modes.tmp.applies exch def + " %s " video_modes.tmp.applies sprintf + video_modes.tmp.applies video_modes.tmp.label strstr 0 eq { pop } if + video_modes.tmp.applies free + } { + pop + } ifelse + } for + ] def + + video_modes.tmp.label free + + xmenu .xm_list get free + xmenu .xm_list [ + video_modes.map { video_modes.rawlabels exch get translate } forall + ] put + + xmenu .xm_current 0 put + 0 1 video_modes.map length 1 sub { + video_modes.map over get video_modes.tmp.oldidx eq { + xmenu .xm_current rot put exit + } { + pop + } ifelse + } for + + xmenu .xm_list get length 1 sub + /video_modes.submenu.idx exch def + + pmenu.init + + /xmenu exch def % restore +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show window. +% +% ( ) ==> ( ) +% +/panel.video_modes { + "video_modes" help.setcontext + + window.xmenu + dup .xmenu xmenu.video_modes put + dup .xmenu.update /video_modes.update put + dup window.init + window.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Return width of panel entry. +% +% ( ) => ( width ) +% +/panel.video_modes.width { + /xmenu xmenu.video_modes def + + pmenu.width +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw panel entry. +% +% ( panel ) => ( ) +% +/panel.video_modes.update { + /xmenu xmenu.video_modes def + + dup pmenu.panel.update + + panel.resolution.recalculate +} def diff --git a/help.inc b/help.inc new file mode 100644 index 0000000..c5e605d --- /dev/null +++ b/help.inc @@ -0,0 +1,716 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% help system +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +% global vars used by help system + + +/help.context "main" def + +/help.light white def +/help.dark black def +/help.font font.normal def +/help.normal.bg lightgray def +/help.normal.fg black def +/help.highlight.fg green def +/help.link.fg blue def +/help.link.selected.fg white def +/help.link.selected.bg blue def + +/help.x 20 def +/help.y 50 def +/help.width 600 def +/help.height 380 def + +clip.size pop 800 eq { + /help.x 120 def + /help.y 90 def + /help.width 560 def + /help.height 359 def +} if + +/help.text.x help.x 10 add def +/help.text.y help.y 30 add def + +/help.text.width help.width 20 sub def +/help.text.height help.height help.text.y sub help.y add 4 sub def +/help.text.rightmargin help.text.x help.text.width add def + +/help.title.x help.x 10 add def +/help.title.y help.y 3 add def +/help.title.height 20 def +/help.title.font font.normal def + +/help.hist.page 16 array def +/help.hist.startrow help.hist.page length array def +/help.hist.selectedlink help.hist.page length array def + + +% for boot option lookup +/bo.opt.max 32 def +/bo.opt bo.opt.max 3 add string def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Map help context. +% +% ( context ) ==> ( new_context ) +% +/help.mapcontext { + dup "o_vncpassword" eq { pop "o_vnc" } if + dup "o_hostip" eq { pop "network" } if + dup "o_netmask" eq { pop "network" } if + dup "o_gateway" eq { pop "network" } if + dup "o_pci" eq { pop "o_acpi" } if + + syslinux not { + % only help, startup, keytable and option pages + dup "o_" strstr 1 ne { + dup "help" ne + over "startup" ne and + over "keytable" ne and + over "profile" ne and { pop "opt" } if + } if + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Set help context. +% +% ( context ) ==> ( ) +% +/help.setcontext { + help.mapcontext /help.context exch def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Find boot option the cursor is positioned at. +% +% ( ) ==> ( option ) +% +/findbootoption { + /bo.buf boot.ed 3 get def + /bo.len boot.ed 4 get def + /bo.pos boot.ed 5 get 0 get def + + { + bo.pos 0 eq { exit } if + bo.buf bo.pos 1 sub get ' ' le { exit } if + /bo.pos dec + } loop + + /bo.buf bo.buf bo.pos add def + + bo.buf 0 get ' ' le { "" return } if + + % "o_" + option name is the help text label + "o_" 3 bo.opt snprintf + + 0 1 bo.opt.max 1 sub { + dup + bo.buf exch get + dup ' ' le over '=' eq or { pop pop exit } if + over bo.opt 2 add exch rot put + bo.opt 3 add exch 0 put + } for + + bo.opt + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Find help page. +% +% returns help page or empty string if no page was found +% +% ( label ) ==> ( help_text ) +% +/help.findpage { + dup length 3 add dup string + "\x12%s\x14" + 3 1 roll dup 5 1 roll snprintf + help.getmessages over strstr + dup { help.getmessages exch 1 sub add } { pop "" } ifelse + exch free +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Find help page. +% +% returns n-th help page or empty string if no page was found +% +% ( n ) ==> ( help_text ) +% +/help.findpagebyindex { + help.getmessages exch + { + dup "\x04" strstr + dup { add } { pop pop "" exit } ifelse + } repeat +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Init & display help page. +% +% ( help_text start_row selected_link ) ==> ( ) +% +/help.initpage { + /help.selectedlink exch def + /help.startrow exch def + + /help.currenttext over def + + title.bg setcolor + help.x 1 add help.y 1 add moveto + help.width 2 sub help.title.height 1 sub fillrect + + help.text.x help.text.y moveto + currentmaxrows 0 setmaxrows exch formattext setmaxrows + + white setcolor + currenteotchar 16 seteotchar + help.title.x help.title.y moveto currenttitle + currentfont help.title.font setfont exch show setfont + seteotchar + + getlinks { help.selectedlink setlink } if + + help.updatepage + + % 500 0 moveto gettextrows print + % 400 0 moveto getlinks print + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw help page. +% +% ( ) ==> ( ) +% +/help.updatepage { + help.normal.bg setcolor + help.text.x help.text.y moveto + help.text.width help.text.height fillrect + + help.normal.fg help.highlight.fg help.link.fg help.link.selected.fg settextcolors + + help.startrow setstartrow + + help.text.x help.text.y moveto + help.currenttext show + + 0 setstartrow + + true help.selectedlink help.redrawlink + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Used to iterate over all help pages. +% +% get the n-th page starting from current pos +% +% ( n ) ==> ( help_text ) +% +/help.test { + help.test.cnt add + dup 1 lt { pop 1 } if + /help.test.cnt over def + help.findpagebyindex + dup "" eq { + % one page back + pop help.test.cnt 1 sub /help.test.cnt over def + help.findpagebyindex + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw link. +% +% selected: true or false. +% +% ( selected n ) ==> ( ) +% +% +/help.redrawlink { + getlinks 0 eq { pop pop return } if + getlink + dup help.startrow lt + over help.startrow help.text.rows add ge or { + 5 { pop } repeat return + } if + help.startrow sub lineheight mul help.text.y add + moveto + rot + + 16 seteotchar + + { + currenttextcolors 4 1 roll pop pop pop + help.link.selected.bg + } { + currenttextcolors 4 2 roll pop pop pop + help.normal.bg + } ifelse + + setcolor over currentpoint rot strsize fillrect moveto + + setcolor show + + 4 seteotchar + + pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Select n-th link. +% +% ( n ) ==> ( ) +% +/help.selectlink { + help.selectedlink over eq { + pop + } { + % deselect old link + false help.selectedlink help.redrawlink + + /help.selectedlink over dup setlink def + + % select link + true exch help.redrawlink + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Select first visible link. +% +% No screen update if 'update' is false. +% +% ( update ) ==> ( ) +% +/help.sel.firstlink { + getlinks { + 0 1 getlinks 1 sub { + dup + getlink 4 1 roll pop pop pop + dup help.startrow help.text.rows add ge { + pop pop exit + } if + dup help.startrow ge { + pop + over { help.selectlink } { /help.selectedlink exch dup setlink def } ifelse + exit + } if + pop pop + } for + } if + pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Select last visible link. +% +% No screen update if 'update' is false. +% +% ( update ) ==> ( ) +% +/help.sel.lastlink { + getlinks { + getlinks 1 sub -1 0 { + dup + getlink 4 1 roll pop pop pop + dup help.startrow lt { + pop pop exit + } if + dup help.startrow help.text.rows add lt { + pop + over { help.selectlink } { /help.selectedlink exch dup setlink def } ifelse + exit + } if + pop pop + } for + } if + pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Push current help context to history. +% +% ( ) ==> ( ) +% +/help.add2history { + help.hist.index help.hist.page length lt { + help.hist.page help.hist.index help.currenttext put + help.hist.startrow help.hist.index help.startrow put + help.hist.selectedlink help.hist.index help.selectedlink put + /help.hist.index help.hist.index 1 add def + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Follow currently selected link. +% +% ( ) ==> ( ) +% +/help.followlink { + getlinks { + help.selectedlink getlink pop pop pop + help.add2history + help.findpage + dup "" eq { + pop + } { + 0 0 help.initpage + } ifelse + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Go back to previous page. +% +% ( ) ==> ( ) +% +/help.prevlink { + help.hist.index 0 gt { + /help.hist.index dec + help.hist.page help.hist.index get + help.hist.startrow help.hist.index get + help.hist.selectedlink help.hist.index get + help.initpage + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Scroll a page down. +% +% ( ) ==> ( ) +% +/help.key.pagedown { + help.startrow + gettextrows help.text.rows gt { + pop + gettextrows help.text.rows sub + help.startrow help.text.rows add + min + } if + + dup help.startrow eq { + pop + true help.sel.lastlink + } { + /help.startrow exch def + false help.sel.firstlink + help.updatepage + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Scroll a page up. +% +% ( ) ==> ( ) +% +/help.key.pageup { + help.startrow + gettextrows help.text.rows gt { + pop + 0 + help.startrow help.text.rows sub + max + } if + + dup help.startrow eq { + pop + true help.sel.firstlink + } { + /help.startrow exch def + false help.sel.firstlink + help.updatepage + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Go to page start. +% +% ( ) ==> ( ) +% +/help.key.home { + help.startrow 0 eq { + true help.sel.firstlink + } { + /help.startrow 0 def + false help.sel.firstlink + help.updatepage + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Go to page end. +% +% ( ) ==> ( ) +% +/help.key.end { + gettextrows help.text.rows sub 0 max + dup help.startrow eq { + pop + true help.sel.lastlink + } { + /help.startrow exch def + false help.sel.lastlink + help.updatepage + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Next link or scroll down. +% +% ( ) ==> ( ) +% +/help.key.down { + help.selectedlink getlinks 1 sub lt { + help.selectedlink 1 add getlink 4 1 roll pop pop pop + dup help.startrow help.text.rows add lt { + % link visible + pop help.selectedlink 1 add help.selectlink + return + } { + help.startrow help.text.rows add eq { + % link visible after scrolling down + /help.selectedlink help.selectedlink 1 add dup setlink def + } if + } ifelse + } if + + % scroll down + + help.startrow help.text.rows add gettextrows lt { + /help.startrow help.startrow 1 add def + help.updatepage + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Previous link or scroll up. +% +% ( ) ==> ( ) +% +/help.key.up { + help.selectedlink 0 gt { + help.selectedlink 1 sub getlink 4 1 roll pop pop pop + % row + dup help.startrow ge { + % link visible + pop help.selectedlink 1 sub help.selectlink + return + } { + help.startrow 1 sub eq { + % link visible after scrolling up + /help.selectedlink help.selectedlink 1 sub dup setlink def + } if + } ifelse + } if + + % scroll up + + help.startrow 0 gt { + /help.startrow dec + help.updatepage + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Jump to a given page number. +% +% ( n ) ==> ( ) +% +/help.gotopage { + help.findpagebyindex + dup help.currenttext eq { + pop + } { + help.add2history + 0 0 help.initpage + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Handle keyboard input. +% +% ( key_in ) ==> ( key_out ) +% +/help.input { + dup 0 eq { return } if + + dup keyEsc eq { /window.action actNothing def window.done } if + dup keyCtrlDown eq { 1 help.test 0 0 help.initpage } if + dup keyCtrlUp eq { -1 help.test 0 0 help.initpage } if + dup keyDown eq { help.key.down } if + dup keyUp eq { help.key.up } if + dup keyPgDown eq { help.key.pagedown } if + dup keyPgUp eq { help.key.pageup } if + dup keyHome eq { help.key.home } if + dup keyEnd eq { help.key.end } if + dup keyRight eq { help.followlink } if + dup keyEnter eq { help.followlink } if + dup keyLeft eq { help.prevlink } if + dup 0xff and '\x08' eq { help.prevlink } if + dup 0xff and ' ' eq { help.key.pagedown } if + dup 0xff and '-' eq { help.key.pageup } if + dup keyF1 eq { 1 help.gotopage } if + dup keyF2 eq { 2 help.gotopage } if + dup keyF3 eq { 3 help.gotopage } if + dup keyF4 eq { 4 help.gotopage } if + dup keyF5 eq { 5 help.gotopage } if + dup keyF6 eq { 6 help.gotopage } if + dup keyF7 eq { 7 help.gotopage } if + dup keyF8 eq { 8 help.gotopage } if + dup keyF9 eq { 9 help.gotopage } if + dup keyF10 eq { 10 help.gotopage } if + pop 0 +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Recalculate some sizes and redraw help screen. +% +% ( ) ==> ( ) +% +/help.reinit { + help.normal.bg setcolor + help.x help.y moveto + help.width help.height fillrect + + help.x 1 add help.y 1 add help.title.height add moveto + help.dark help.light + help.width 2 sub help.height 2 sub help.title.height sub + drawborder + + help.font setfont + + /help.text.rows help.text.height lineheight div def + help.text.rows setmaxrows + + help.text.rightmargin settextwrap +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialize help window. +% +% ( window ) ==> ( ) +% +/help.init { + /help.tmp exch def + + help.x 1 sub help.y 1 sub moveto + help.light help.dark + help.width 2 add help.height 2 add + over over + savescreen + help.tmp .saved rot put + drawborder + + help.reinit + + 4 seteotchar + + /help.hist.index 0 def + + /help.test.cnt 1 def + + help.context help.findpage dup "" eq { pop 1 help.findpagebyindex } if + 0 0 help.initpage +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw help window. +% +% ( window ) ==> ( ) +% +/help.show { + window.push +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Close current help window. +% +% ( ) ==> ( ) +% +/help.done { + 0 settextwrap + 0 seteotchar + 0 setmaxrows +} def + + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Create new help window. +% +% ( ) ==> ( window ) +% +/window.help { + widget.size array + dup .type t_help put + + dup .x help.x put + dup .y help.y put + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Find help texts. +% +% ( ) ==> ( start_of_help_messages ) +% +/help.getmessages { + + help.messages .undef eq { + % find help texts + /help.messages + help.file free /help.file .undef def + 16 string dup config.lang "%s.hlp" 2 index sprintf + findfile exch free + dup .undef eq { + pop 16 string + dup config.lang 1 get config.lang 0 get "%c%c.hlp" 3 index sprintf + findfile exch free + } if + dup .undef eq { pop "en.hlp" findfile } if + dup .undef eq { pop "" } if + /help.file over def + cvs + def + } if + + help.messages + +} def + + diff --git a/install.config b/install.config new file mode 100644 index 0000000..66503a6 --- /dev/null +++ b/install.config @@ -0,0 +1,30 @@ +%% include system.inc + +%% include timeout.inc +%% include common.inc + +%% include po/text.inc +%% include window.inc +%% include button.inc +%% include help.inc +%% include main.inc +%% include menuconfig.inc +%% include xmenu.inc +%% include dia_video.inc +%% include dia_lang.inc +%% include dia_keymap.inc +%% include dia_modes.inc +%% include dia_help.inc +%% include dia_profile.inc +%% include dia_audio.inc +%% include dia_options.inc +%% include dia_fulloptions.inc +%% include dia_access.inc +%% include dia_videomodes.inc +%% include panel.inc +%% include timezones.inc +%% include keytables.inc +%% include langnames.inc +%% include locale.inc +%% include splash.inc + diff --git a/keytables.inc b/keytables.inc new file mode 100644 index 0000000..732c203 --- /dev/null +++ b/keytables.inc @@ -0,0 +1,1384 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Keyboard mappings. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +/.km.name 0 def +/.km.map 1 def +/.km.display 2 def +/.km.locales 3 def +/.km.model 4 def + +/keymap.by [ + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.bg [ + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.ba [ + [ 0x02 0x31 0x21 0x00 ] + [ 0x03 0x32 0x22 0x00 ] + [ 0x04 0x33 0x23 0x00 ] + [ 0x05 0x34 0x24 0x00 ] + [ 0x06 0x35 0x25 0x2a ] + [ 0x07 0x36 0x26 0x00 ] + [ 0x08 0x37 0x2f 0x00 ] + [ 0x09 0x38 0x28 0x2e ] + [ 0x0a 0x39 0x29 0x00 ] + [ 0x0b 0x30 0x3d 0x00 ] + [ 0x0c 0x27 0x3f 0x00 ] + [ 0x0d 0x2b 0x2a 0x00 ] + [ 0x10 0x71 0x51 0x5c ] + [ 0x11 0x77 0x57 0x7c ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x7a 0x5a 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x00 0x00 0xf7 ] + [ 0x1b 0x00 0x00 0xd7 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0x00 ] + [ 0x21 0x66 0x46 0x5b ] + [ 0x22 0x67 0x47 0x5d ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x28 0x00 0x00 0xdf ] + [ 0x29 0x60 0x7e 0xac ] + [ 0x2b 0x00 0x00 0xa4 ] + [ 0x2c 0x79 0x59 0x00 ] + [ 0x2d 0x78 0x58 0x00 ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x40 ] + [ 0x30 0x62 0x42 0x7b ] + [ 0x31 0x6e 0x4e 0x7d ] + [ 0x32 0x6d 0x4d 0x5e ] + [ 0x33 0x2c 0x3b 0x3c ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.cz [ + [ 0x02 0x2b 0x31 0x21 ] + [ 0x03 0x00 0x32 0x40 ] + [ 0x04 0x00 0x33 0x23 ] + [ 0x05 0x00 0x34 0x24 ] + [ 0x06 0x00 0x35 0x25 ] + [ 0x07 0x00 0x36 0x5e ] + [ 0x08 0xfd 0x37 0x26 ] + [ 0x09 0xe1 0x38 0x2a ] + [ 0x0a 0xed 0x39 0x7b ] + [ 0x0b 0xe9 0x30 0x7d ] + [ 0x0c 0x3d 0x25 0x5c ] + [ 0x0d 0x00 0x00 0x5f ] + [ 0x10 0x71 0x51 0x5c ] + [ 0x11 0x77 0x57 0x7c ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x7a 0x5a 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xfa 0x2f 0x5b ] + [ 0x1b 0x29 0x28 0x5d ] + [ 0x1e 0x61 0x41 0x7e ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0x00 ] + [ 0x21 0x66 0x46 0x5b ] + [ 0x22 0x67 0x47 0x5d ] + [ 0x23 0x68 0x48 0x60 ] + [ 0x24 0x6a 0x4a 0x27 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0x00 0x22 0x24 ] + [ 0x28 0xa7 0x21 0x27 ] + [ 0x29 0x3b 0x2a 0x60 ] + [ 0x2b 0x00 0x27 0x5c ] + [ 0x2c 0x79 0x59 0xb0 ] + [ 0x2d 0x78 0x58 0x23 ] + [ 0x2e 0x63 0x43 0x26 ] + [ 0x2f 0x76 0x56 0x40 ] + [ 0x30 0x62 0x42 0x7b ] + [ 0x31 0x6e 0x4e 0x7d ] + [ 0x32 0x6d 0x4d 0x5e ] + [ 0x33 0x2c 0x3f 0x3c ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2d 0x5f 0x2a ] + [ 0x56 0x5c 0x7c 0x2f ] +] def + +/keymap.dk [ + [ 0x02 0x31 0x21 0xa1 ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0x23 0xa3 ] + [ 0x05 0x34 0xa4 0x24 ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xa5 ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x2b 0x3f 0xb1 ] + [ 0x0d 0x00 0x00 0x7c ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xae ] + [ 0x14 0x74 0x54 0xfe ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0x00 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xe5 0xc5 0x00 ] + [ 0x1e 0x61 0x41 0xaa ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xe6 0xc6 0x00 ] + [ 0x28 0xf8 0xd8 0x00 ] + [ 0x29 0xbd 0xa7 0xbe ] + [ 0x2b 0x27 0x2a 0x00 ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa9 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0xb7 ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x5c ] +] def + +/keymap.de [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x22 0xb2 ] + [ 0x04 0x33 0xa7 0xb3 ] + [ 0x05 0x34 0x24 0xbc ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xac ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0xdf 0x3f 0x5c ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x7a 0x5a 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xfc 0xdc 0x00 ] + [ 0x1b 0x2b 0x2a 0x00 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x24 0x6a 0x4a 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xf6 0xd6 0x00 ] + [ 0x28 0xe4 0xc4 0x00 ] + [ 0x29 0x00 0xb0 0x00 ] + [ 0x2b 0x23 0x27 0x00 ] + [ 0x2c 0x79 0x59 0xbb ] + [ 0x2d 0x78 0x58 0xab ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x31 0x6e 0x4e 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0xb7 ] + [ 0x34 0x2e 0x3a 0x00 ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.us [ + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.gb [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x22 0xb2 ] + [ 0x04 0x33 0xa3 0xb3 ] + [ 0x05 0x34 0x24 0x00 ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x5e 0xbe ] + [ 0x08 0x37 0x26 0x7b ] + [ 0x09 0x38 0x2a 0x5b ] + [ 0x0a 0x39 0x28 0x5d ] + [ 0x0b 0x30 0x29 0x7d ] + [ 0x0c 0x2d 0x5f 0x5c ] + [ 0x0d 0x3d 0x2b 0x00 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x5b 0x7b 0x00 ] + [ 0x1b 0x5d 0x7d 0x00 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0x3b 0x3a 0x00 ] + [ 0x28 0x27 0x40 0x00 ] + [ 0x29 0x60 0xac 0x7c ] + [ 0x2b 0x23 0x7e 0x00 ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3c 0x00 ] + [ 0x34 0x2e 0x3e 0xb7 ] + [ 0x35 0x2f 0x3f 0x00 ] + [ 0x56 0x5c 0x7c 0x7c ] +] def + +/keymap.es [ + [ 0x02 0x31 0x21 0x7c ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0xb7 0x23 ] + [ 0x05 0x34 0x24 0x7e ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xac ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x27 0x3f 0x5c ] + [ 0x0d 0xa1 0xbf 0x00 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x00 0x00 0x5b ] + [ 0x1b 0x2b 0x2a 0x5d ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xf1 0xd1 0x7e ] + [ 0x28 0x00 0x00 0x7b ] + [ 0x29 0xba 0xaa 0x5c ] + [ 0x2b 0xe7 0xc7 0x7d ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0xb7 ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.latam [ + [ 0x02 0x31 0x21 0x7c ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0x23 0xb7 ] + [ 0x05 0x34 0x24 0x7e ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xac ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x27 0x3f 0x5c ] + [ 0x0d 0xbf 0xa1 0x00 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1b 0x2b 0x2a 0x7e ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xf1 0xd1 0x7e ] + [ 0x28 0x7b 0x5b 0x00 ] + [ 0x29 0x7c 0xb0 0xac ] + [ 0x2b 0x7d 0x5d 0x00 ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0xb7 ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.ee [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0x23 0xa3 ] + [ 0x05 0x34 0xa4 0x24 ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xac ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x2b 0x3f 0x5c ] + [ 0x0d 0x00 0x00 0x60 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xfc 0xdc 0x00 ] + [ 0x1b 0xf5 0xd5 0xa7 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xf6 0xd6 0x00 ] + [ 0x28 0xe4 0xc4 0x5e ] + [ 0x29 0x00 0x00 0xac ] + [ 0x2b 0x27 0x2a 0xbd ] + [ 0x2c 0x7a 0x5a 0x00 ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x3c ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2d 0x5f 0x7c ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.fi [ + [ 0x02 0x31 0x21 0x00 ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0x23 0xa3 ] + [ 0x05 0x34 0xa4 0x24 ] + [ 0x06 0x35 0x25 0x00 ] + [ 0x07 0x36 0x26 0x00 ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x2b 0x3f 0x5c ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x14 0x74 0x54 0xfe ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0x00 ] + [ 0x19 0x70 0x50 0x00 ] + [ 0x1a 0xe5 0xc5 0x00 ] + [ 0x1e 0x61 0x41 0x00 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x2d ] + [ 0x27 0xf6 0xd6 0xf8 ] + [ 0x28 0xe4 0xc4 0xe6 ] + [ 0x29 0xa7 0xbd 0x2d ] + [ 0x2b 0x27 0x2a 0x00 ] + [ 0x2c 0x7a 0x5a 0x00 ] + [ 0x2d 0x78 0x58 0xd7 ] + [ 0x31 0x6e 0x4e 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0x00 ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x39 0x20 0x20 0xa0 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.fr_oss [ + [ 0x02 0x26 0x31 0x00 ] + [ 0x03 0xe9 0x32 0x7e ] + [ 0x04 0x22 0x33 0x23 ] + [ 0x05 0x27 0x34 0x7b ] + [ 0x06 0x28 0x35 0x5b ] + [ 0x07 0x2d 0x36 0x7c ] + [ 0x08 0xe8 0x37 0x60 ] + [ 0x09 0x5f 0x38 0x5c ] + [ 0x0a 0xe7 0x39 0x5e ] + [ 0x0b 0xe0 0x30 0x40 ] + [ 0x0c 0x29 0xb0 0x5d ] + [ 0x0d 0x3d 0x2b 0x7d ] + [ 0x10 0x61 0x41 0xe6 ] + [ 0x11 0x7a 0x5a 0xe2 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xea ] + [ 0x14 0x74 0x54 0xfe ] + [ 0x15 0x79 0x59 0xff ] + [ 0x16 0x75 0x55 0xfb ] + [ 0x17 0x69 0x49 0xee ] + [ 0x18 0x6f 0x4f 0x00 ] + [ 0x19 0x70 0x50 0xf4 ] + [ 0x1b 0x24 0xa3 0xf8 ] + [ 0x1e 0x71 0x51 0xe4 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xeb ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0xf0 ] + [ 0x24 0x6a 0x4a 0xfc ] + [ 0x25 0x6b 0x4b 0xef ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0x6d 0x4d 0xf6 ] + [ 0x28 0xf9 0x25 0x00 ] + [ 0x29 0xb2 0xb3 0xb9 ] + [ 0x2b 0x2a 0xb5 0x00 ] + [ 0x2c 0x77 0x57 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa9 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x31 0x6e 0x4e 0xac ] + [ 0x32 0x2c 0x3f 0xbf ] + [ 0x33 0x3b 0x2e 0xd7 ] + [ 0x34 0x3a 0x2f 0xf7 ] + [ 0x35 0x21 0xa7 0xa1 ] + [ 0x56 0x3c 0x3e 0x00 ] +] def + +/keymap.ca [ + [ 0x02 0x31 0x21 0xb1 ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0x2f 0xa3 ] + [ 0x05 0x34 0x24 0xa2 ] + [ 0x06 0x35 0x25 0xa4 ] + [ 0x07 0x36 0x3f 0xac ] + [ 0x08 0x37 0x26 0xa6 ] + [ 0x09 0x38 0x2a 0xb2 ] + [ 0x0a 0x39 0x28 0xb3 ] + [ 0x0b 0x30 0x29 0xbc ] + [ 0x0c 0x2d 0x5f 0xbd ] + [ 0x0d 0x3d 0x2b 0xbe ] + [ 0x18 0x6f 0x4f 0xa7 ] + [ 0x19 0x70 0x50 0xb6 ] + [ 0x1a 0x00 0x00 0x5b ] + [ 0x1b 0x00 0x00 0x5d ] + [ 0x27 0x3b 0x3a 0x7e ] + [ 0x28 0x00 0x00 0x7b ] + [ 0x29 0x23 0x7c 0x5c ] + [ 0x2b 0x3c 0x3e 0x7d ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x27 0xaf ] + [ 0x34 0x2e 0x2e 0xad ] + [ 0x35 0xe9 0xc9 0x00 ] + [ 0x39 0x20 0x20 0xa0 ] + [ 0x56 0xab 0xbb 0xb0 ] +] def + +/keymap.be [ + [ 0x02 0x26 0x31 0x7c ] + [ 0x03 0xe9 0x32 0x40 ] + [ 0x04 0x22 0x33 0x23 ] + [ 0x05 0x27 0x34 0xbc ] + [ 0x06 0x28 0x35 0xbd ] + [ 0x07 0xa7 0x36 0x5e ] + [ 0x08 0xe8 0x37 0x7b ] + [ 0x09 0x21 0x38 0x5b ] + [ 0x0a 0xe7 0x39 0x7b ] + [ 0x0b 0xe0 0x30 0x7d ] + [ 0x0c 0x29 0xb0 0x5c ] + [ 0x0d 0x2d 0x5f 0x00 ] + [ 0x10 0x61 0x41 0x40 ] + [ 0x11 0x7a 0x5a 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0x00 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x00 0x00 0x5b ] + [ 0x1b 0x24 0x2a 0x5d ] + [ 0x1e 0x71 0x51 0xe6 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0x6d 0x4d 0x00 ] + [ 0x28 0xf9 0x25 0x00 ] + [ 0x29 0xb2 0xb3 0xac ] + [ 0x2b 0xb5 0xa3 0x00 ] + [ 0x2c 0x77 0x57 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x2c 0x3f 0x00 ] + [ 0x33 0x3b 0x2e 0x00 ] + [ 0x34 0x3a 0x2f 0xb7 ] + [ 0x35 0x3d 0x2b 0x00 ] + [ 0x56 0x3c 0x3e 0x5c ] +] def + +/keymap.hu [ + [ 0x02 0x31 0x27 0x7e ] + [ 0x03 0x32 0x22 0x00 ] + [ 0x04 0x33 0x2b 0x5e ] + [ 0x05 0x34 0x21 0x00 ] + [ 0x06 0x35 0x25 0x2a ] + [ 0x07 0x36 0x2f 0x00 ] + [ 0x08 0x37 0x3d 0x60 ] + [ 0x09 0x38 0x28 0x2e ] + [ 0x0a 0x39 0x29 0x00 ] + [ 0x0b 0xf6 0xd6 0x00 ] + [ 0x0c 0xfc 0xdc 0x00 ] + [ 0x0d 0xf3 0xd3 0x00 ] + [ 0x10 0x71 0x51 0x5c ] + [ 0x11 0x77 0x57 0x7c ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x7a 0x5a 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0xcd ] + [ 0x18 0x6f 0x4f 0x00 ] + [ 0x19 0x70 0x50 0x00 ] + [ 0x1a 0x00 0x00 0xf7 ] + [ 0x1b 0xfa 0xda 0xd7 ] + [ 0x1e 0x61 0x41 0xe4 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0x00 ] + [ 0x21 0x66 0x46 0x5b ] + [ 0x22 0x67 0x47 0x5d ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x24 0x6a 0x4a 0xed ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xe9 0xc9 0x24 ] + [ 0x28 0xe1 0xc1 0xdf ] + [ 0x29 0x30 0xa7 0xac ] + [ 0x2b 0x00 0x00 0xa4 ] + [ 0x2c 0x79 0x59 0x3e ] + [ 0x2d 0x78 0x58 0x23 ] + [ 0x2e 0x63 0x43 0x26 ] + [ 0x2f 0x76 0x56 0x40 ] + [ 0x30 0x62 0x42 0x7b ] + [ 0x31 0x6e 0x4e 0x7d ] + [ 0x32 0x6d 0x4d 0x3c ] + [ 0x33 0x2c 0x3f 0x3b ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2d 0x5f 0x2a ] + [ 0x56 0xed 0xcd 0x3c ] +] def + +/keymap.is [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x22 0xb2 ] + [ 0x04 0x33 0x23 0xb3 ] + [ 0x05 0x34 0x24 0xbc ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xac ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0xf6 0xd6 0x5c ] + [ 0x0d 0x2d 0x5f 0x00 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xf0 0xd0 0x00 ] + [ 0x1b 0x27 0x3f 0x00 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xe6 0xc6 0x5e ] + [ 0x29 0x2a 0x00 0xac ] + [ 0x2b 0x2b 0x2a 0x00 ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0xb7 ] + [ 0x35 0xfe 0xde 0x00 ] + [ 0x39 0x20 0x20 0xa0 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.it [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x22 0xb2 ] + [ 0x04 0x33 0xa3 0xb3 ] + [ 0x05 0x34 0x24 0xbc ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xac ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x27 0x3f 0x60 ] + [ 0x0d 0xec 0x5e 0x7e ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xe8 0xe9 0x5b ] + [ 0x1b 0x2b 0x2a 0x5d ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xf2 0xe7 0x40 ] + [ 0x28 0xe0 0xb0 0x23 ] + [ 0x29 0x5c 0x7c 0xac ] + [ 0x2b 0xf9 0xa7 0x00 ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x31 0x6e 0x4e 0xf1 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0xb7 ] + [ 0x35 0x2d 0x5f 0x5f ] + [ 0x56 0x3c 0x3e 0xab ] +] def + +/keymap.kz [ + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.lt [ + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.lv [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x40 0xb2 ] + [ 0x04 0x33 0x23 0xb3 ] + [ 0x05 0x34 0x24 0x00 ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x5e 0xbe ] + [ 0x08 0x37 0x26 0x7b ] + [ 0x09 0x38 0x2a 0x5b ] + [ 0x0a 0x39 0x28 0x5d ] + [ 0x0b 0x30 0x29 0x7d ] + [ 0x0c 0x2d 0x5f 0x5c ] + [ 0x0d 0x3d 0x2b 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0x00 ] + [ 0x1a 0x5b 0x7b 0xab ] + [ 0x1b 0x5d 0x7d 0xbb ] + [ 0x1e 0x61 0x41 0x00 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x28 0x27 0x22 0x00 ] + [ 0x29 0x60 0x7e 0x27 ] + [ 0x2b 0x5c 0x7c 0x60 ] + [ 0x2c 0x7a 0x5a 0x00 ] + [ 0x2e 0x63 0x43 0x00 ] + [ 0x31 0x6e 0x4e 0x00 ] + [ 0x33 0x2c 0x3c 0x00 ] + [ 0x34 0x2e 0x3e 0xb7 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.nl [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x22 0xb2 ] + [ 0x04 0x33 0x23 0xb3 ] + [ 0x05 0x34 0x24 0xbc ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xbe ] + [ 0x08 0x37 0x5f 0xa3 ] + [ 0x09 0x38 0x28 0x7b ] + [ 0x0a 0x39 0x29 0x7d ] + [ 0x0b 0x30 0x27 0xb0 ] + [ 0x0c 0x2f 0x3f 0x5c ] + [ 0x0d 0xb0 0x00 0x00 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0xfe ] + [ 0x15 0x79 0x59 0xff ] + [ 0x16 0x75 0x55 0xfc ] + [ 0x17 0x69 0x49 0xef ] + [ 0x18 0x6f 0x4f 0xf2 ] + [ 0x19 0x70 0x50 0xb6 ] + [ 0x1a 0x00 0x00 0x7e ] + [ 0x1b 0x2a 0x7c 0x00 ] + [ 0x1e 0x61 0x41 0xe1 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0xaa ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0x2b 0xb1 0x00 ] + [ 0x28 0x00 0x00 0x27 ] + [ 0x29 0x40 0xa7 0xac ] + [ 0x2b 0x3c 0x3e 0x00 ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x31 0x6e 0x4e 0xf1 ] + [ 0x32 0x6d 0x4d 0x00 ] + [ 0x33 0x2c 0x3b 0xb8 ] + [ 0x34 0x2e 0x3a 0xb7 ] + [ 0x35 0x2d 0x3d 0xad ] + [ 0x56 0x5d 0x5b 0x7c ] +] def + +/keymap.no [ + [ 0x02 0x31 0x21 0xa1 ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0x23 0xa3 ] + [ 0x05 0x34 0xa4 0x24 ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xa5 ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x2b 0x3f 0xb1 ] + [ 0x0d 0x5c 0x00 0x00 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xae ] + [ 0x14 0x74 0x54 0xfe ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0x00 ] + [ 0x19 0x70 0x50 0x00 ] + [ 0x1a 0xe5 0xc5 0x00 ] + [ 0x1e 0x61 0x41 0xaa ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xf8 0xd8 0x00 ] + [ 0x28 0xe6 0xc6 0x00 ] + [ 0x29 0x7c 0xa7 0xa6 ] + [ 0x2b 0x27 0x2a 0x00 ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa9 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0x00 ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x39 0x20 0x20 0xa0 ] + [ 0x56 0x3c 0x3e 0xbd ] +] def + +/keymap.pl [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x40 0xb2 ] + [ 0x04 0x33 0x23 0xb3 ] + [ 0x05 0x34 0x24 0xbc ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x5e 0xbe ] + [ 0x08 0x37 0x26 0x7b ] + [ 0x09 0x38 0x2a 0x5b ] + [ 0x0a 0x39 0x28 0x5d ] + [ 0x0b 0x30 0x29 0x7d ] + [ 0x0c 0x2d 0x5f 0x5c ] + [ 0x0d 0x3d 0x2b 0x00 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf3 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x5b 0x7b 0x00 ] + [ 0x1b 0x5d 0x7d 0x00 ] + [ 0x1e 0x61 0x41 0x00 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0x3b 0x3a 0x00 ] + [ 0x28 0x27 0x22 0x00 ] + [ 0x29 0x60 0x7e 0xac ] + [ 0x2b 0x5c 0x7c 0x00 ] + [ 0x2c 0x7a 0x5a 0x00 ] + [ 0x2d 0x78 0x58 0x00 ] + [ 0x2e 0x63 0x43 0x00 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x31 0x6e 0x4e 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3c 0x00 ] + [ 0x34 0x2e 0x3e 0xb7 ] + [ 0x35 0x2f 0x3f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.br [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x40 0xb2 ] + [ 0x04 0x33 0x23 0xb3 ] + [ 0x05 0x34 0x24 0xa3 ] + [ 0x06 0x35 0x25 0xa2 ] + [ 0x07 0x36 0x00 0xac ] + [ 0x08 0x37 0x26 0x7b ] + [ 0x09 0x38 0x2a 0x5b ] + [ 0x0a 0x39 0x28 0x5d ] + [ 0x0b 0x30 0x29 0x7d ] + [ 0x0c 0x2d 0x5f 0x5c ] + [ 0x0d 0x3d 0x2b 0xa7 ] + [ 0x10 0x71 0x51 0x2f ] + [ 0x11 0x77 0x57 0x3f ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xae ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x00 0x00 0x27 ] + [ 0x1b 0x5b 0x7b 0xaa ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xe7 0xc7 0x00 ] + [ 0x28 0x00 0x00 0x7e ] + [ 0x29 0x27 0x22 0xac ] + [ 0x2b 0x5d 0x7d 0xba ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa9 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3c 0x00 ] + [ 0x34 0x2e 0x3e 0xb7 ] + [ 0x35 0x3b 0x3a 0x00 ] + [ 0x56 0x5c 0x7c 0xba ] + [ 0x59 0x2f 0x3f 0xb0 ] +] def + +/keymap.hr [ + [ 0x02 0x31 0x21 0x7e ] + [ 0x03 0x32 0x22 0x00 ] + [ 0x04 0x33 0x23 0x5e ] + [ 0x05 0x34 0x24 0x00 ] + [ 0x06 0x35 0x25 0xb0 ] + [ 0x07 0x36 0x26 0x00 ] + [ 0x08 0x37 0x2f 0x60 ] + [ 0x09 0x38 0x28 0x2e ] + [ 0x0a 0x39 0x29 0x00 ] + [ 0x0b 0x30 0x3d 0x00 ] + [ 0x0c 0x27 0x3f 0x00 ] + [ 0x0d 0x2b 0x2a 0x00 ] + [ 0x10 0x71 0x51 0x5c ] + [ 0x11 0x77 0x57 0x7c ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x7a 0x5a 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x00 0x00 0xf7 ] + [ 0x1b 0x00 0x00 0xd7 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0x00 ] + [ 0x21 0x66 0x46 0x5b ] + [ 0x22 0x67 0x47 0x5d ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x28 0x00 0x00 0xdf ] + [ 0x29 0x60 0x7e 0xac ] + [ 0x2b 0x00 0x00 0xa4 ] + [ 0x2c 0x79 0x59 0x00 ] + [ 0x2d 0x78 0x58 0x00 ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x40 ] + [ 0x30 0x62 0x42 0x7b ] + [ 0x31 0x6e 0x4e 0x7d ] + [ 0x32 0x6d 0x4d 0x5e ] + [ 0x33 0x2c 0x3b 0x3c ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.pt [ + [ 0x02 0x31 0x21 0xb9 ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0x23 0xa3 ] + [ 0x05 0x34 0x24 0xa7 ] + [ 0x06 0x35 0x25 0xbd ] + [ 0x07 0x36 0x26 0xac ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x27 0x3f 0x5c ] + [ 0x0d 0xab 0xbb 0x00 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x2b 0x2a 0x00 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xe7 0xc7 0x00 ] + [ 0x28 0xba 0xaa 0x00 ] + [ 0x29 0x5c 0x7c 0xac ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0xb7 ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.ro [ + [ 0x02 0x31 0x21 0x00 ] + [ 0x03 0x32 0x40 0x00 ] + [ 0x04 0x33 0x23 0x00 ] + [ 0x05 0x34 0x24 0x00 ] + [ 0x06 0x35 0x25 0x2a ] + [ 0x07 0x36 0x5e 0x00 ] + [ 0x08 0x37 0x26 0x00 ] + [ 0x09 0x38 0x2a 0x2e ] + [ 0x0a 0x39 0x28 0x00 ] + [ 0x0b 0x30 0x29 0x00 ] + [ 0x0c 0x2d 0x5f 0x00 ] + [ 0x0d 0x3d 0x2b 0x00 ] + [ 0x10 0x71 0x51 0xe2 ] + [ 0x11 0x77 0x57 0xdf ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x17 0x69 0x49 0xee ] + [ 0x19 0x70 0x50 0xa7 ] + [ 0x1a 0x5b 0x7b 0x00 ] + [ 0x1b 0x5d 0x7d 0x00 ] + [ 0x1e 0x61 0x41 0x00 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x2e 0x63 0x43 0xa9 ] + [ 0x33 0x2c 0x3c 0xab ] + [ 0x34 0x2e 0x3e 0xbb ] + [ 0x56 0x5c 0x7c 0x7c ] +] def + +/keymap.ru [ + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.sk [ + [ 0x02 0x2b 0x31 0x21 ] + [ 0x03 0x00 0x32 0x40 ] + [ 0x04 0x00 0x33 0x23 ] + [ 0x05 0x00 0x34 0x24 ] + [ 0x06 0x00 0x35 0x25 ] + [ 0x07 0x00 0x36 0x5e ] + [ 0x08 0xfd 0x37 0x26 ] + [ 0x09 0xe1 0x38 0x2a ] + [ 0x0a 0xed 0x39 0x7b ] + [ 0x0b 0xe9 0x30 0x7d ] + [ 0x0c 0x3d 0x25 0x5c ] + [ 0x0d 0x00 0x00 0x5f ] + [ 0x10 0x71 0x51 0x5c ] + [ 0x11 0x77 0x57 0x7c ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x7a 0x5a 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xfa 0x2f 0x5b ] + [ 0x1b 0xe4 0x28 0x5d ] + [ 0x1e 0x61 0x41 0x7e ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0x00 ] + [ 0x21 0x66 0x46 0x5b ] + [ 0x22 0x67 0x47 0x5d ] + [ 0x23 0x68 0x48 0x60 ] + [ 0x24 0x6a 0x4a 0x27 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xf4 0x22 0x24 ] + [ 0x28 0xa7 0x21 0x27 ] + [ 0x29 0x3b 0x2a 0x60 ] + [ 0x2b 0x00 0x29 0x5c ] + [ 0x2c 0x79 0x59 0xb0 ] + [ 0x2d 0x78 0x58 0x23 ] + [ 0x2e 0x63 0x43 0x26 ] + [ 0x2f 0x76 0x56 0x40 ] + [ 0x30 0x62 0x42 0x7b ] + [ 0x31 0x6e 0x4e 0x7d ] + [ 0x32 0x6d 0x4d 0x5e ] + [ 0x33 0x2c 0x3f 0x3c ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2d 0x5f 0x2a ] + [ 0x39 0x20 0x20 0xa0 ] + [ 0x56 0x5c 0x7c 0x2f ] +] def + +/keymap.si [ + [ 0x02 0x31 0x21 0x00 ] + [ 0x03 0x32 0x22 0x00 ] + [ 0x04 0x33 0x23 0x00 ] + [ 0x05 0x34 0x24 0x00 ] + [ 0x06 0x35 0x25 0x2a ] + [ 0x07 0x36 0x26 0x00 ] + [ 0x08 0x37 0x2f 0x00 ] + [ 0x09 0x38 0x28 0x2e ] + [ 0x0a 0x39 0x29 0x00 ] + [ 0x0b 0x30 0x3d 0x00 ] + [ 0x0c 0x27 0x3f 0x00 ] + [ 0x0d 0x2b 0x2a 0x00 ] + [ 0x10 0x71 0x51 0x5c ] + [ 0x11 0x77 0x57 0x7c ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x7a 0x5a 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0x00 0x00 0xf7 ] + [ 0x1b 0x00 0x00 0xd7 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0x00 ] + [ 0x21 0x66 0x46 0x5b ] + [ 0x22 0x67 0x47 0x5d ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x28 0x00 0x00 0xdf ] + [ 0x29 0xb8 0xa8 0xa8 ] + [ 0x2b 0x00 0x00 0xa4 ] + [ 0x2c 0x79 0x59 0x00 ] + [ 0x2d 0x78 0x58 0x00 ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x40 ] + [ 0x30 0x62 0x42 0x7b ] + [ 0x31 0x6e 0x4e 0x7d ] + [ 0x32 0x6d 0x4d 0x5e ] + [ 0x33 0x2c 0x3b 0x3c ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.al [ + [ 0x02 0x31 0x21 0x7e ] + [ 0x03 0x32 0x22 0x00 ] + [ 0x04 0x33 0x23 0x00 ] + [ 0x05 0x34 0x24 0x00 ] + [ 0x06 0x35 0x25 0x2a ] + [ 0x07 0x36 0x5e 0x00 ] + [ 0x08 0x37 0x26 0x60 ] + [ 0x09 0x38 0x2a 0x2e ] + [ 0x0a 0x39 0x28 0x00 ] + [ 0x0b 0x30 0x29 0x00 ] + [ 0x0c 0x2d 0x5f 0x00 ] + [ 0x0d 0x3d 0x2b 0x00 ] + [ 0x10 0x71 0x51 0x5c ] + [ 0x11 0x77 0x57 0x7c ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xb6 ] + [ 0x14 0x74 0x54 0x00 ] + [ 0x15 0x7a 0x5a 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0xf8 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xe7 0xc7 0xf7 ] + [ 0x1b 0x40 0x27 0xd7 ] + [ 0x1e 0x61 0x41 0xe6 ] + [ 0x1f 0x73 0x53 0x00 ] + [ 0x20 0x64 0x44 0x00 ] + [ 0x21 0x66 0x46 0x5b ] + [ 0x22 0x67 0x47 0x5d ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xeb 0xcb 0x24 ] + [ 0x28 0x5b 0x7b 0xdf ] + [ 0x29 0x5c 0x7c 0xac ] + [ 0x2b 0x5d 0x7d 0xa4 ] + [ 0x2c 0x79 0x59 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa2 ] + [ 0x2f 0x76 0x56 0x40 ] + [ 0x30 0x62 0x42 0x7b ] + [ 0x31 0x6e 0x4e 0x7d ] + [ 0x32 0x6d 0x4d 0xa7 ] + [ 0x33 0x2c 0x3b 0x3c ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2f 0x3f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.rs [ + [ 0x02 0x31 0x21 0x00 ] + [ 0x03 0x32 0x22 0x00 ] + [ 0x04 0x33 0x23 0x00 ] + [ 0x05 0x34 0x24 0x00 ] + [ 0x06 0x35 0x25 0x00 ] + [ 0x07 0x36 0x26 0x00 ] + [ 0x08 0x37 0x2f 0x00 ] + [ 0x09 0x38 0x28 0x38 ] + [ 0x0a 0x39 0x29 0x00 ] + [ 0x0b 0x30 0x3d 0x30 ] + [ 0x0c 0x27 0x3f 0x5f ] + [ 0x0d 0x2b 0x2a 0x00 ] + [ 0x10 0x00 0x00 0x5c ] + [ 0x11 0x00 0x00 0x7c ] + [ 0x13 0x00 0x00 0xb6 ] + [ 0x18 0x00 0x00 0xa7 ] + [ 0x1a 0x00 0x00 0xf7 ] + [ 0x1b 0x00 0x00 0xd7 ] + [ 0x21 0x00 0x00 0x5b ] + [ 0x22 0x00 0x00 0x5d ] + [ 0x29 0x60 0x7e 0xb0 ] + [ 0x2b 0x00 0x00 0xa4 ] + [ 0x2e 0x00 0x00 0xa2 ] + [ 0x2f 0x00 0x00 0x40 ] + [ 0x30 0x00 0x00 0x7b ] + [ 0x31 0x00 0x00 0x7d ] + [ 0x32 0x00 0x00 0x5e ] + [ 0x33 0x2c 0x3b 0x3c ] + [ 0x34 0x2e 0x3a 0x3e ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.se [ + [ 0x02 0x31 0x21 0xa1 ] + [ 0x03 0x32 0x22 0x40 ] + [ 0x04 0x33 0x23 0xa3 ] + [ 0x05 0x34 0xa4 0x24 ] + [ 0x06 0x35 0x25 0x00 ] + [ 0x07 0x36 0x26 0xa5 ] + [ 0x08 0x37 0x2f 0x7b ] + [ 0x09 0x38 0x28 0x5b ] + [ 0x0a 0x39 0x29 0x5d ] + [ 0x0b 0x30 0x3d 0x7d ] + [ 0x0c 0x2b 0x3f 0x5c ] + [ 0x0d 0x00 0x00 0xb1 ] + [ 0x10 0x71 0x51 0x40 ] + [ 0x11 0x77 0x57 0x00 ] + [ 0x12 0x65 0x45 0x00 ] + [ 0x13 0x72 0x52 0xae ] + [ 0x14 0x74 0x54 0xfe ] + [ 0x15 0x79 0x59 0x00 ] + [ 0x16 0x75 0x55 0x00 ] + [ 0x17 0x69 0x49 0x00 ] + [ 0x18 0x6f 0x4f 0x00 ] + [ 0x19 0x70 0x50 0xfe ] + [ 0x1a 0xe5 0xc5 0x00 ] + [ 0x1e 0x61 0x41 0xaa ] + [ 0x1f 0x73 0x53 0xdf ] + [ 0x20 0x64 0x44 0xf0 ] + [ 0x21 0x66 0x46 0x00 ] + [ 0x22 0x67 0x47 0x00 ] + [ 0x23 0x68 0x48 0x00 ] + [ 0x25 0x6b 0x4b 0x00 ] + [ 0x26 0x6c 0x4c 0x00 ] + [ 0x27 0xf6 0xd6 0xf8 ] + [ 0x28 0xe4 0xc4 0xe6 ] + [ 0x29 0xa7 0xbd 0xb6 ] + [ 0x2b 0x27 0x2a 0x27 ] + [ 0x2c 0x7a 0x5a 0xab ] + [ 0x2d 0x78 0x58 0xbb ] + [ 0x2e 0x63 0x43 0xa9 ] + [ 0x2f 0x76 0x56 0x00 ] + [ 0x30 0x62 0x42 0x00 ] + [ 0x32 0x6d 0x4d 0xb5 ] + [ 0x33 0x2c 0x3b 0x00 ] + [ 0x34 0x2e 0x3a 0xb7 ] + [ 0x35 0x2d 0x5f 0x00 ] + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymap.ua [ + [ 0x56 0x3c 0x3e 0x7c ] +] def + +/keymaps [ + [ "by" keymap.by "Belarusian" [ "_BY" ] .undef ] + [ "bg" keymap.bg "Bulgarian" [ "_BG" ] .undef ] + [ "ba" keymap.ba "Bosnia" [ "bs_" ] .undef ] + [ "cz" keymap.cz "Czech" [ "_CZ" ] .undef ] + [ "dk" keymap.dk "Danish" [ "_DK" ] .undef ] + [ "de" keymap.de "German" [ "de_" ] .undef ] + [ "us" keymap.us "USA" [ "en_US" "_AU" ] .undef ] + [ "gb" keymap.gb "UK" [ "_GB" ] .undef ] + [ "es" keymap.es "Spanish" [ "_ES" ] .undef ] + [ "latam" keymap.latam "Latin Amer." [ "_UY" "_VE" ] .undef ] + [ "ee" keymap.ee "Estonian" [ "_EE" ] .undef ] + [ "fi" keymap.fi "Finnish" [ "_FI" ] .undef ] + [ "fr_oss" keymap.fr_oss "French" [ "fr_FR" ] .undef ] + [ "ca" keymap.ca "Canada" [ "fr_CA" ] .undef ] + [ "be" keymap.be "Belgian" [ "fr_BE" ] .undef ] + [ "hu" keymap.hu "Hungarian" [ "_HU" ] .undef ] + [ "is" keymap.is "Icelandic" [ "_IS" ] .undef ] + [ "hr" keymap.hr "Croatian" [ "hr_" ] .undef ] + [ "it" keymap.it "Italian" [ "_IT" ] .undef ] + [ "kz" keymap.kz "Kazakh" [ "kk_" ] .undef ] + [ "lv" keymap.lv "Latvian" [ "_LV" ] .undef ] + [ "lt" keymap.lt "Lithuanian" [ "_LT" ] .undef ] + [ "nl" keymap.nl "Dutch" [ "nl_" ] .undef ] + [ "no" keymap.no "Norwegian" [ "_NO" ] .undef ] + [ "pl" keymap.pl "Polish" [ "_PL" ] .undef ] + [ "br" keymap.br "Brazil" [ "_BR" ] "abnt2" ] + [ "pt" keymap.pt "Portuguese" [ "_PT" ] .undef ] + [ "ro" keymap.ro "Romanian" [ "_RO" ] .undef ] + [ "ru" keymap.ru "Russian" [ "_RU" ] .undef ] + [ "sk" keymap.sk "Slovak" [ "_SK" ] .undef ] + [ "si" keymap.si "Slovenian" [ "_SI" ] .undef ] + [ "al" keymap.al "Albanian" [ "_AL" ] .undef ] + [ "rs" keymap.rs "Serbian" [ "sr_" ] .undef ] + [ "se" keymap.se "Swedish" [ "sv_" ] .undef ] + [ "ua" keymap.ua "Ukrainian" [ "_UA" ] .undef ] +] def + + +% set to "us" for safety +/config.keymap keymaps 0 get def diff --git a/langlist b/langlist new file mode 100644 index 0000000..bb66a9c --- /dev/null +++ b/langlist @@ -0,0 +1,38 @@ +be_BY +bg_BG +bs_BA +cs_CZ +da_DK +de_DE +en_AU +en_GB +en_US +es_ES +es_UY +es_VE +et_EE +fr_BE +fr_CA +fr_FR +hr_HR +is_IS +it_IT +kk_KZ +lt_LT +lv_LV +hu_HU +nl_BE +nl_NL +nn_NO +pl_PL +pt_BR +pt_PT +ro_RO +ru_RU +sk_SK +sl_SI +sq_AL +sr_RS +fi_FI +sv_SE +uk_UA diff --git a/langnames.inc b/langnames.inc new file mode 100644 index 0000000..a41d6ea --- /dev/null +++ b/langnames.inc @@ -0,0 +1,40 @@ +/lang.defaultnames [ + [ "be_BY" "be_BY" "Беларуская (Беларусь)" ] + [ "bg_BG" "bg_BG" "Български (България)" ] + [ "bs_BA" "bs_BA" "Bosanski (Bosna i Hercegovina)" ] + [ "cs_CZ" "cs_CZ" "Čeština (Česká republika)" ] + [ "da_DK" "da_DK" "Dansk (Danmark)" ] + [ "de_DE" "de_DE" "Deutsch (Deutschland)" ] + [ "en_AU" "en_AU" "English (Australia)" ] + [ "en_GB" "en_GB" "English (United Kingdom)" ] + [ "en_US" "en_US" "English (United States)" ] + [ "es_ES" "es_ES" "Español (España)" ] + [ "es_UY" "es_UY" "Español (Uruguay)" ] + [ "es_VE" "es_VE" "Español (Venezuela)" ] + [ "et_EE" "et_EE" "Eesti (Eesti)" ] + [ "fi_FI" "fi_FI" "Suomi (Suomi)" ] + [ "fr_BE" "fr_BE" "Français (Belgique)" ] + [ "fr_CA" "fr_CA" "Français (Canada)" ] + [ "fr_FR" "fr_FR" "Français (France)" ] + [ "hr_HR" "hr_HR" "Hrvatski (Hrvatska)" ] + [ "hu_HU" "hu_HU" "Magyar (Magyarország)" ] + [ "is_IS" "is_IS" "Íslenska (Ísland)" ] + [ "it_IT" "it_IT" "Italiano (Italia)" ] + [ "kk_KZ" "kk_KZ" "Қазақ тілі (Қазақстан)" ] + [ "lt_LT" "lt_LT" "Lietuvių (Lietuva)" ] + [ "lv_LV" "lv_LV" "Latviešu (Latvija)" ] + [ "nl_BE" "nl_BE" "Nederlands (België)" ] + [ "nl_NL" "nl_NL" "Nederlands (Nederland)" ] + [ "nn_NO" "nn_NO" "Nynorsk (Noreg)" ] + [ "pl_PL" "pl_PL" "Polski (Polska)" ] + [ "pt_BR" "pt_BR" "Português (Brasil)" ] + [ "pt_PT" "pt_PT" "Português (Portugal)" ] + [ "ro_RO" "ro_RO" "Română (România)" ] + [ "ru_RU" "ru_RU" "Русский (Россия)" ] + [ "sk_SK" "sk_SK" "Slovenčina (Slovenská republika)" ] + [ "sl_SI" "sl_SI" "Slovenščina (Slovenija)" ] + [ "sq_AL" "sq_AL" "Shqip (Shqipëria)" ] + [ "sr_RS" "sr_RS" "Српски (Србија)" ] + [ "sv_SE" "sv_SE" "Svenska (Sverige)" ] + [ "uk_UA" "uk_UA" "Українська (Україна)" ] +] def diff --git a/locale.inc b/locale.inc new file mode 100644 index 0000000..607bc10 --- /dev/null +++ b/locale.inc @@ -0,0 +1,166 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Handle translations. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Set language. +% +% ( locale ) ==> ( true|false ) +% +/setlang { + config.lang over eq { pop false return } if + + /config.lang exch def + + /help.messages .undef def + + texts.msgstr { + texts.msgstr dup { free } forall free + /texts.msgstr .undef def + } if + + findtexts + + true +} def + + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Set keyboard map. +% +% ( locale ) ==> ( ) +% +/setkeymap { + config.keymap.locale over eq { pop false return } if + + % Get the full locale if possible. + lang.getlocale + + /config.keymap.locale exch def + + /setkeymap.found false def + + % Look for an exact match first. + keymaps { + dup .km.locales get { + config.keymap.locale exch eq { + dup /config.keymap exch def /setkeymap.found true def exit + } if + } forall + pop + setkeymap.found { exit } if + } forall + + % If that didn't work, try a substring match. + setkeymap.found not { + keymaps { + dup .km.locales get { + config.keymap.locale exch strstr 0 ne { + dup /config.keymap exch def /setkeymap.found true def exit + } if + } forall + pop + setkeymap.found { exit } if + } forall + } if + + % if we couldn't find anything, try without the country + setkeymap.found not { + config.keymap.locale "_" strstr dup 0 ne { + 1 sub + dup string /lang.tmp exch def + lang.tmp cvp config.keymap.locale cvp 2 index memcpy + lang.tmp exch 0 put + keymaps { + dup .km.locales get { + lang.tmp exch strstr 0 ne { + dup /config.keymap exch def /setkeymap.found true def exit + } if + } forall + pop + setkeymap.found { exit } if + } forall + } { + pop + } ifelse + } if + + /keymap.explicit false def +} def + + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Find texts for current language. +% +% ( ) ==> ( ) +% +/findtexts { + texts.file free /texts.file .undef def + 16 string dup config.lang "%s.tr" 2 index sprintf findfile exch free + dup .undef eq { + config.lang length 2 gt { + pop 16 string + dup config.lang 1 get config.lang 0 get "%c%c.tr" 3 index sprintf findfile exch free + } if + } if + dup .undef eq { pop "en.tr" findfile } if + /texts.file over def + dup .undef eq { pop 0 cvp } if + cvs + /ft.len over cvp length def + /ft.str exch def + /ft.pos 0 def + + texts { + ft.pos ft.str length add ft.len lt { + ft.str def + /ft.str ft.str dup length 1 add /ft.pos over ft.pos add def add def + } { + "No Texts!" def + } ifelse + } forall +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Translate menu entry. +% +% ( text ) ==> ( text ) +% +/translate { + translations.init + + texts.msgid .undef eq texts.msgstr .undef eq or { return } if + + 0 1 texts.msgid length 1 sub { + texts.msgid over get 2 index eq { + texts.msgstr over get exch pop exch pop exit + } { pop } ifelse + } for +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Read menu translations. +% +% ( ) ==> ( ) +% +/translations.init { + texts.msgstr { return } if + + texts.msgid .undef eq { + /config.lang.tmp config.lang def + /config.lang "en_US" def + findtexts + /texts.msgid [ texts { exec strdup } forall ] def + /config.lang config.lang.tmp def + } if + findtexts + /texts.msgstr [ texts { exec strdup } forall ] def +} def + diff --git a/main.inc b/main.inc new file mode 100644 index 0000000..12b832b --- /dev/null +++ b/main.inc @@ -0,0 +1,263 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Main menu (boot entry + boot options + panel). +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Create new main window. +% +% ( ) ==> ( window ) +% +/window.main { + widget.size array + dup .type t_main put + dup .font font.normal put + dup .ed.font font.normal put + dup .color.fg boot.text.normal put + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialize main window. +% +% ( window ) ==> ( ) +% +/main.init { + pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Redraw main window. +% (E.g. after selecting a new language.) +% +% ( window ) ==> ( ) +% +/main.redraw { + boot.text.options setcolor + window.current .font get setfont + boot.pos.init + % clear to far right of screen + boot.pos moveto boot.label.len neg 1 neg rmoveto + currentpoint screen.size pop 2 index sub boot.ed.height 2 add image + % redraw boot line + boot.setup + + redrawmenu + /keepbootoptions 1 def + menu.entry true MenuSelect + /keepbootoptions .undef def + + panel.show +} def + + +/boot.setup { + boot.show { + boot.window .ed boot.ed put + } if + + boot.pos.init + boot.pos moveto + + boot.show { + boot.text.options setcolor + txt_bootoptions showright + + currenttransparency + white setcolor + boot.pos moveto 10 boot.ed.height rmoveto + 0xe0 settransparency + boot.ed.width 1 fillrect + settransparency + boot.ed edit.redraw + } if +} def + + +/menu.init { + % None of this may involve showing anything on the screen. + /menu.shift 0 def + /menu.visible.entries menu.texts length menu.max.entries min def + + % get index of default entry + /menu.entry 0 def + 0 1 menu.texts length 1 sub { + dup menu.texts exch get menu.dentry eq { /menu.entry exch def exit } { pop } ifelse + } for + + menu.entry menu.visible.entries sub 0 ge { + /menu.shift menu.entry menu.texts length menu.visible.entries sub min def + } if + + boot.pos.init + + /boot.ed.width screen.size pop boot.pos pop sub 20 sub def + /boot.ed.height fontheight 2 add def + + /boot.ed [ + boot.pos exch 10 add exch 1 sub + % can't save background pixmap yet + .undef + boot.buf + boot.buf.size + .undef + ] def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw main window. +% +% ( window ) ==> ( ) +% +/main.show { + window.push + + menu.init + + menu.visible.entries menu.texts length lt menu.scrollbar and { + /menu.bar.width frame1.size pop frame4.size pop sub def + + -1 settransparentcolor + + frame4.pos moveto black dup frame4.size drawborder + frame4.pos moveto + ms.up ms.size image + frame4.pos moveto frame4.size exch pop 0 exch ms.size exch pop 0 add sub rmoveto + ms.down ms.size image + + /menu.sb.x frame4.pos pop 1 add def + /menu.sb.y frame4.pos exch pop 22 add def + /menu.sb.width frame4.size pop 2 sub def + /menu.sb.height frame4.size exch pop 22 2 mul sub def + + menu.sb.x menu.sb.y 1 sub moveto + menu.sb.x menu.sb.width add menu.sb.y 1 sub lineto + + menu.sb.x menu.sb.y menu.sb.height add moveto + menu.sb.x menu.sb.width add menu.sb.y menu.sb.height add lineto + } if + + boot.text.options setcolor + + window.current .font get setfont + + /boot.window window.current def + + % save background behind boot parameters field + boot.ed dup 0 get exch 1 get + over over moveto boot.ed.width boot.ed.height savescreen + boot.ed 2 rot put + + boot.setup + + redrawmenu + menu.entry true MenuSelect + + panel.init + + "main" help.setcontext + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Handle keyboard input. +% +% ( key_in ) ==> ( key_out ) +% +/main.input { + dup 0 eq { return } if + + % handle panel entries + panel.input + + dup keyF10 eq { + power_off + pop 0 + } if + + dup keyEsc eq { exit_popup pop 0 } if + + dup keyEnter eq { + /window.action actStart def + pop 0 + } if + + dup keyUp eq { + menu.entry 0 gt { + menu.entry false MenuSelect + menu.entry menu.shift eq { + /menu.shift dec redrawmenu + } if + /menu.entry dec + menu.entry true MenuSelect + } if + pop 0 + } if + + dup keyTab eq { + boot.show not { + /boot.show true def + boot.setup + + ed.color setcolor + boot.window .ed.font get setfont + + boot.ed 3 get + boot.ed over edit.init + "" ne { boot.ed ' ' edit.input } if + } if + + pop 0 + } if + + dup keyDown eq { + menu.entry menu.texts length 1 sub lt { + menu.entry false MenuSelect + menu.visible.entries menu.entry menu.shift sub sub 1 eq { + /menu.shift menu.shift 1 add def redrawmenu + } if + /menu.entry menu.entry 1 add def + menu.entry true MenuSelect + } if + pop 0 + } if + + dup keyPgUp eq { + menu.entry 0 gt { + menu.entry false MenuSelect + /menu.entry 0 def + menu.shift 0 ne { + /menu.shift 0 def redrawmenu + } if + menu.entry true MenuSelect + } if + pop 0 + } if + + dup keyPgDown eq { + menu.entry menu.texts length 1 sub lt { + menu.entry false MenuSelect + /menu.entry menu.texts length 1 sub def + menu.texts length menu.visible.entries sub dup menu.shift ne { + /menu.shift exch def redrawmenu + } { + pop + } ifelse + menu.entry true MenuSelect + } if + pop 0 + } if + + dup 0 ne { + "opt" help.setcontext + } if + +} def + + diff --git a/menuconfig.inc b/menuconfig.inc new file mode 100644 index 0000000..368b03e --- /dev/null +++ b/menuconfig.inc @@ -0,0 +1,221 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Read syslinux configuration to get human-readable names for menu items, and +% to decide whether to hide menu items. The configuration used is the same as +% that used by the syslinux simple menu system, so you can use the same +% configuration file for both. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +% ( str2 str1 -- str ) +/menuconfig.append { + over length over length add string /menuconfig.append.tmp exch def + "%s%s" menuconfig.append.tmp sprintf + menuconfig.append.tmp +} def + +% Read a configuration file. If file_name is .undef, look in some standard +% places. +% ( file_name -- file_contents ) +/menuconfig.find { + /menuconfig.find.tmp exch def + menuconfig.find.tmp { + [ + menuconfig.find.tmp + menuconfig.find.tmp "/" menuconfig.append + menuconfig.find.tmp "/syslinux/" menuconfig.append + menuconfig.find.tmp "/isolinux/" menuconfig.append + menuconfig.find.tmp "/boot/isolinux/" menuconfig.append + ] + } { + [ + "syslinux.cfg" + "/syslinux.cfg" + "/syslinux/syslinux.cfg" + "isolinux.cfg" + "/isolinux.cfg" + "/isolinux/isolinux.cfg" + "/boot/isolinux/isolinux.cfg" + ] + } ifelse + { + dup filesize .undef ne { findfile cvs return } if + pop + } forall + .undef +} def + +% Set the human-readable text for the current menu item. +% ( string -- ) +/menuconfig.sethuman { + menuconfig.curlabel .undef eq { pop return } if + + /menuconfig.human exch def + + /menuconfig.idx 0 def + menuconfig.entries { + menuconfig.curlabel eq { + menuconfig.humans menuconfig.idx menuconfig.human put + return + } if + /menuconfig.idx inc + } forall + + % The gfxboot com32 module in syslinux parses the configuration file for + % us, but only gives us the human-readable labels, so we may need to + % translate them back. + /menuconfig.idx 0 def + menuconfig.humans { + menuconfig.human eq { + menuconfig.labels menuconfig.idx menuconfig.curlabel put + return + } if + /menuconfig.idx inc + } forall +} def + +% Remove the current menu item from the menu. +% ( -- ) +/menuconfig.hidelabel { + menuconfig.curlabel .undef eq { return } if + + /menuconfig.idx 0 def + menuconfig.labels { + menuconfig.curlabel eq { + % Copy everything up to here into new arrays. + /menuconfig.newargs menuconfig.args length 1 sub array def + /menuconfig.newentries menuconfig.entries length 1 sub array def + /menuconfig.newhumans menuconfig.humans length 1 sub array def + /menuconfig.newindices menuconfig.indices length 1 sub array def + /menuconfig.newlabels menuconfig.labels length 1 sub array def + menuconfig.idx 0 ne { + 0 1 menuconfig.idx 1 sub { + menuconfig.args over get + menuconfig.newargs 2 index rot put + menuconfig.entries over get + menuconfig.newentries 2 index rot put + menuconfig.humans over get + menuconfig.newhumans 2 index rot put + menuconfig.labels over get + menuconfig.newlabels 2 index rot put + menuconfig.indices over get + menuconfig.newindices 3 1 roll put + } for + } if + + menuconfig.idx menuconfig.labels length 1 sub lt { + % Slide everything else down one place. + menuconfig.idx 1 menuconfig.labels length 2 sub { + menuconfig.args over 1 add get + menuconfig.newargs 2 index rot put + menuconfig.entries over 1 add get + menuconfig.newentries 2 index rot put + menuconfig.humans over 1 add get + menuconfig.newhumans 2 index rot put + menuconfig.labels over 1 add get + menuconfig.newlabels 2 index rot put + menuconfig.indices over 1 add get + menuconfig.newindices 3 1 roll put + } for + } if + + /menuconfig.args menuconfig.newargs def + /menuconfig.entries menuconfig.newentries def + /menuconfig.humans menuconfig.newhumans def + /menuconfig.indices menuconfig.newindices def + /menuconfig.labels menuconfig.newlabels def + + return + } if + /menuconfig.idx inc + } forall +} def + +% ( file_name -- ) +/menuconfig.parse { + % load configuration file; return if not found + menuconfig.find dup .undef eq { pop return } if + + dup { + % skip over any NULs we've left behind; exit if there's really no more + % memory left to go + { + dup cvp length 0 eq { exit } if + dup 0 get 0 ne { exit } if + 1 add + } loop + dup cvp length 0 eq { exit } if + + % break lines at \r or \n + 0 1 2 index length 1 sub { + over over get + dup '\x0d' eq exch '\n' eq or { over exch 0 put exit } { pop } ifelse + } for + + skipspace getword tolower + dup "include" eq { + over skipspace getword dup menuconfig.parse + } if + dup "label" eq { + over skipspace strdup /menuconfig.curlabel exch def + } if + dup "menu" eq { + over skipspace getword tolower + dup "label" eq { over skipspace strdup menuconfig.sethuman } if + dup "hide" eq { menuconfig.hidelabel } if + % items that switch between syslinux menus are unlikely to be useful + % in gfxboot + dup "goto" eq { menuconfig.hidelabel } if + dup "exit" eq { menuconfig.hidelabel } if + free rot pop exch + } if + dup "config" eq { + % used for help menu item, not useful in gfxboot + menuconfig.hidelabel + } if + free + + % skip to end of line + dup length add + } loop pop + free +} def + +% ( menu_entries_array menu_args_array -- menu_indices_array menu_humans_array menu_entries_array menu_args_array ) +% The returned menu_args_array (kernel parameters), menu_entries_array +% (identifiers), menu_humans_array (human-readable names), and +% menu_indices_array (original indices) will have any hidden entries +% removed. +/menuconfig.init { + dup length array /menuconfig.args exch def + dup length array /menuconfig.entries exch def + over length array /menuconfig.labels exch def + over length array /menuconfig.humans exch def + over length array /menuconfig.indices exch def + + % copy input arrays; initialise menuconfig.humans + /menuconfig.idx 0 def + { + menuconfig.args menuconfig.idx rot put + /menuconfig.idx inc + } forall + /menuconfig.idx 0 def + { + dup menuconfig.entries menuconfig.idx rot put + dup menuconfig.labels menuconfig.idx rot put + menuconfig.humans menuconfig.idx rot put + menuconfig.indices menuconfig.idx dup put + /menuconfig.idx inc + } forall + + % we only understand syslinux configuration + syslinux not { + menuconfig.humans menuconfig.entries menuconfig.args return + } if + + /menuconfig.curlabel .undef def + + .undef menuconfig.parse + + menuconfig.labels menuconfig.indices menuconfig.humans menuconfig.entries menuconfig.args +} def diff --git a/panel.inc b/panel.inc new file mode 100644 index 0000000..0c1612c --- /dev/null +++ b/panel.inc @@ -0,0 +1,154 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Panel handling. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Some global vars. +% +/panel.size { clip.size pop 24 } def +/panel.y { clip.size exch pop panel.size exch pop sub 10 sub } def +/panel.text.y { panel.y 5 add } def +/panel.font font.normal def +/panel.normal lightblue def +/panel.high white def +/panel.bg lightgray def +/panel.border lightdotcolor def + +/.panel.full 1 def +/.panel.short 2 def +/.panel.both .panel.full .panel.short or def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Init panel. +% +% ( ) ==> ( ) +% +/panel.init { + + /panel.back 0 panel.y moveto panel.size savescreen def + + % define panel layout + /panel.template [ + + % [ key x label show_func width_func update_func init_func ] + + help.getmessages "" ne { + [ .panel.both [ keyF1 0 "F1" /panel.help /panel.help.width /panel.help.update .undef ] ] + } if + + syslinux { + + [ .panel.both [ keyF2 0 "F2" /panel.lang /panel.lang.width /panel.lang.update /lang.init ] ] + %[ .panel.both [ keyF3 0 "F3" /panel.keymap /panel.keymap.width /panel.keymap.update /keymap.init ] ] + [ .panel.both [ keyF3 0 "F3" /panel.video_modes /panel.video_modes.width /panel.video_modes.update /video_modes.init ] ] + audio.use { + [ .panel.both [ keyF4 0 "F4" /panel.audio /panel.audio.width /panel.audio.update /audio.init ] ] + [ .panel.both [ keyF5 0 "F5" /panel.options /panel.fulloptions.width /panel.fulloptions.update /fulloptions.init ] ] + } { + [ .panel.both [ keyF4 0 "F4" /panel.options /panel.fulloptions.width /panel.fulloptions.update /fulloptions.init ] ] + } ifelse + [ .panel.both [ .undef 0 "Tab" /panel.help /panel.help.width /panel.tab.update .undef ] ] + + + } { + + [ .panel.both [ keyF2 0 "F2" /panel.lang /panel.lang.width /panel.lang.update /lang.init ] ] + "profiles" findfile dup { + /profile.data exch def + [ .panel.both [ keyF3 0 "F3" /panel.profile /panel.profile.width /panel.profile.update /profile.init ] ] + } { pop } ifelse + + } ifelse + + ] def + + % initialize all + panel.template { 1 get 6 get dup .undef ne { exec } { pop } ifelse } forall + + /panel.full [ + panel.template { + dup 0 get .panel.full and 0 ne { 1 get } { pop } ifelse + } forall + ] def + + /panel.short [ + panel.template { + dup 0 get .panel.short and 0 ne { 1 get } { pop } ifelse + } forall + ] def + + /panel panel.short def + + panel.show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show panel. +% +% ( ) ==> ( ) +% +/panel.show { + panel.font setfont + +% panel.bg setcolor + 0 panel.y moveto +% currentpoint + panel.back restorescreen +% currenttransparency +% 50 settransparency +% panel.size fillrect +% settransparency +% moveto + +% panel.border setcolor +% 0 -1 rmoveto +% 0 1 clip.size pop 3 div { pop putpixel 3 0 rmoveto } for + + % don't change xmenu + /xmenu xmenu + + /panel.x 0 def + panel { dup { + dup 1 panel.x put + dup 4 get exec over 2 get strsize pop add 20 add panel.x add /panel.x exch def + dup 5 get exec + } { pop } ifelse } forall + + def + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Handle keyboard input. +% +% ( key_in ) ==> ( key_out ) +% +/panel.input { + panel { dup { + dup 0 get 2 index eq { 3 get exec pop 0 exit } { pop } ifelse + } { pop } ifelse } forall +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw panel entry label and move to text field. +% +% ( panel ) => ( ) +% +/panel.text.moveto { + /panel.tmp.x over 1 get 10 add def + /panel.tmp.F exch 2 get def + + panel.tmp.x panel.text.y moveto + panel.high setcolor panel.tmp.F show + panel.normal setcolor + + 6 0 rmoveto +} def + + diff --git a/po/Makefile b/po/Makefile new file mode 100644 index 0000000..809a22f --- /dev/null +++ b/po/Makefile @@ -0,0 +1,14 @@ +POFILES = $(wildcard *.po) +TEXTS = $(addsuffix .tr,$(basename $(wildcard *.po))) + +all: text.inc $(TEXTS) + +%.tr: %.po text.inc + bin/po2txt $< >$@ + +# en.tr uses msgids from bootloader.pot +en.tr text.inc: bootloader.pot + bin/po2txt $< >en.tr + +clean: + rm -f text.inc *.tr *~ diff --git a/po/README b/po/README new file mode 100644 index 0000000..a27800a --- /dev/null +++ b/po/README @@ -0,0 +1,24 @@ +boot loader translations +------------------------ + +o How do I add a new text? + + - Use the gfxboot/po/bin/add_text script; example: + + add_text help 'Help' + + This will define txt_help; the 'txt_' prefix is optional. + +o How do I remove a text that's no longer needed? + + - Use the gfxboot/po/bin/rm_text script; example: + + rm_text help + + This will remove txt_help; the removed lines are stored in the 'old' + directory. + +o How do I add a new language? + + - Copy bootloader.pot to .po. Remember to get .po translated. + diff --git a/po/be.po b/po/be.po new file mode 100644 index 0000000..be1ef74 --- /dev/null +++ b/po/be.po @@ -0,0 +1,317 @@ +# Belarusian translation for gfxboot-theme-ubuntu +# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# FIRST AUTHOR , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2006-03-18 12:14:59.394968+00:00\n" +"PO-Revision-Date: 2014-03-04 21:39+0000\n" +"Last-Translator: Mikhail_SaTuRn \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Добра" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Скасаваць" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Перазагрузіць" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Далей" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Параметры загрузкі" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Выхад..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Вы пакідаеце графічнае меню загрузкі.\n" +"Будзе запушчаны тэкставы інтэрфейс." + +#. txt_help +msgid "Help" +msgstr "Даведка" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Загрузчык" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Памылка ўводу/вываду" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Змяніце загрузачны дыск" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Устаўце загрузачны дыск %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Гэта загрузачны дыск %u.\n" +"Устаўце дыск %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Гэта непрыдатны загрузачны дыск.\n" +"Калі ласка, устаўце дыск %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Пароль" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Увядзіце ваш пароль: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Памылка DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Гэта двухбаковы DVD. Вы загрузіліся з другога боку.\n" +"\n" +"Перавярніце DVD и працягвайце." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Выключыць" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Выключыць сістэму?" + +#. txt_password +msgid "Password\n" +msgstr "Пароль\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Іншыя параметры" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Лакаль" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Клавіятура" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Рэжымы" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Звычайны" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Рэжым для экспертаў" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Дадатковыя магчымасці" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Няма" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Высокі кантраст" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Экранная лупа" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Чытанне з экрана" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Тэрмінал Брайля" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Мадыфікатары клавіятуры" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Экранная клавіятура" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Абсталяванне пры праблемах з маторыкай" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Усё разам" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Выкарыстаць дыск з абнаўленнямі драйвераў" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Усталяваць працоўную станцыю" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Усталяваць сервер" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM усталёўка (для вытворцаў)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Усталяваць сервер LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Усталяваць сервер LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Усталяваць сістэму без графічнага інтэрфейсу" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Усталяваць сістэму ў мінімальнай камплектацыі" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Усталяваць мінімальную віртуальную машыну" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Праверыць дыск на дэфекты" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Аднавіць сістэму" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Тэст ^памяці" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Загрузіцца з першага цвёрдага дыска" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Толькі свабоднае праграмнае забеспячэнне" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Аўтаматычная пераўсталёўка Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Разрозьненьне" + +#. txt_videodrv +msgid "Video" +msgstr "Відэа" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Аўдыё" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 0000000..3916219 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,320 @@ +# translation of bg.po to +# translation of bg.po to Bulgarian +# translation of bootloader.po to Bulgarian +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Copyright (C) 2004 Vdel CREC +# Borislav Mitev , 2004, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: bg\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2014-01-28 22:11+0000\n" +"Last-Translator: Atanas Kovachki \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Добре" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Откажи" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Рестартирай" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Продължи" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Параметри на зареждането" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Изход..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Вие напускате графичното меню и\n" +"влизате в текстовия интерфейс." + +#. txt_help +msgid "Help" +msgstr "Помощ" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Зареждане на операционна система" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "В/И грешка" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Сменете зареждащият диск" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Поставете зареждащ диск %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Това е зареждащ диск %u.\n" +"Поставете зареждащ диск %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Това не е подходящият зареждащ диск.\n" +"Поставете зареждащ диск %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Парола" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Въведете парола си: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD грешка" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Това е двустранно DVD. Вие сте заредили от втората страна\n" +"\n" +"Моля, обърнете DVD-то и след това продължете." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Изключи" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Желаете ли да изключите сега системата?" + +#. txt_password +msgid "Password\n" +msgstr "Парола\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Други настройки" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Локал" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Kлавиатурна подредба" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Режими" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Нормален" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Експертен режим" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Достъпност" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Няма" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Висок контраст" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Лупа" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Екранен четец" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Брайлов терминал" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Промяна на клавишите" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Екранна клавиатура" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Превключващи устройства при нарушена подвижност" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Всичко" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Използвай актуализазионен диск с драйвери" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Инсталирай работна станция" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Инсталирай сървър" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-режим на инсталиране (за производители)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Инсталирай LAMP сървър" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Инсталирай LTSP сървър" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Инсталирай системата без графичен интерфейс" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Инсталирай минимална система" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Инсталирай минимална виртуална машина" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Провери диска за дефекти" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Спаси ^повредена система" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Тествай ^паметта" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Зареди от първия твърд диск" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Само безплатен софтуер" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Автоматично преинсталиране на Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Разделителна способност" + +#. txt_videodrv +msgid "Video" +msgstr "Видео" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Звук" diff --git a/po/bin/add_text b/po/bin/add_text new file mode 100755 index 0000000..54a0536 --- /dev/null +++ b/po/bin/add_text @@ -0,0 +1,99 @@ +#! /usr/bin/perl + +# add a new text to *.po files + +sub usage () { + die "usage: add_text [-b id] [-c comment] id text_line1 text_line2 ... \nexample:\n add_text MENU_LANG Language\n"; +} + +usage if @ARGV < 2; + +my $before_id = ''; +my $comment; + +while ($ARGV[0] =~ /^-/) { + if ($ARGV[0] eq '-b') { + shift; + $before_id = shift; + } elsif ($ARGV[0] eq '-c') { + shift; + $comment = shift; + } else { + usage; + } +} + +$id = shift; +@texts = @ARGV; + +$before_id =~ s/^txt_//; +$id =~ s/^txt_//; + +$_ = join '', @texts; + +push @l, "#. $comment\n" if $comment; +push @l, "#. txt_$id\n"; +push @l, "#, c-format\n" if /%/; + +if(@texts == 1) { + push @l, "msgid \"$texts[0]\"\n" +} +else { + push @l, "msgid \"\"\n"; + for (@texts) { push @l, "\"$_\"\n" } +} + +push @l, "msgstr \"\"\n"; + +print @l; + +print STDERR "Should this entry be added to all *.po files? [Y/n]\n"; + +$_ = ; + +chomp; + +$_ = "\L$_"; + +exit unless $_ eq '' || $_ eq 'y'; + +print "ok\n"; + +for $f ("bootloader.pot", <*.po>) { + open OLD, $f or next; + unless (open NEW, '>', "$f.new") { + close OLD; + next; + } + my @buffer; + for () { + if ($before_id) { + if (/^#\./) { + push @buffer, $_; + if (/^#\. txt_\Q$before_id\E$/) { + print NEW @l, "\n"; + print NEW @buffer; + @buffer = (); + } + } elsif (/^msgid/) { + print NEW @buffer; + @buffer = (); + print NEW; + } elsif (@buffer) { + push @buffer, $_; + } else { + print NEW; + } + } else { + print NEW; + } + } + print NEW @buffer if @buffer; + if (not $before_id) { + print NEW "\n", @l; + } + close NEW; + close OLD; + rename "$f.new", $f; +} + diff --git a/po/bin/change_text b/po/bin/change_text new file mode 100755 index 0000000..4dd887d --- /dev/null +++ b/po/bin/change_text @@ -0,0 +1,105 @@ +#! /usr/bin/perl -w + +# change a string in *.po files + +die "usage: change_text [-c comment] id text_line1 text_line2 ...\n" if @ARGV < 2; + +my $comment; + +if ($ARGV[0] eq '-c') { + shift; + $comment = shift; +} + +my $id = shift; +my @texts = @ARGV; + +$id =~ s/^txt_//; + +sub print_buffer (*$@) { + my $fh = shift; + my $need_fuzzy = shift; + my @buffer = @_; + if ($need_fuzzy) { + if (@buffer and $buffer[0] =~ /^#,/) { + if ($buffer[0] !~ /fuzzy/) { + $buffer[0] =~ s/^#, //; + $buffer[0] = "#, fuzzy, $buffer[0]"; + } + } else { + unshift @buffer, "#, fuzzy\n"; + } + } + print $fh @buffer; +} + +for my $f ("bootloader.pot", <*.po>) { + open OLD, $f or next; + unless (open NEW, '>', "$f.new") { + close OLD; + next; + } + my $state = ''; + my $need_fuzzy = 0; + my @buffer; + for () { + if (/^#\. txt_\Q$id\E$/) { + $state = 'ID'; + $need_fuzzy = 0; + if (defined $comment) { + print NEW "#. $comment\n"; + } else { + print NEW @buffer; + } + @buffer = (); + print NEW; + } elsif (/^#\. txt_/) { + print NEW @buffer; + @buffer = (); + print NEW; + } elsif (/^#\. /) { + $state = 'BUFFER'; + push @buffer, $_; + } elsif ($state eq 'ID' and /^#,/) { + $state = 'BUFFER'; + push @buffer, $_; + } elsif ($state eq 'ID' and /^msgid/) { + $state = 'MSGID'; + if (@texts == 1) { + push @buffer, "msgid \"$texts[0]\"\n"; + } else { + push @buffer, "msgid \"\"\n"; + for my $text (@texts) { + push @buffer, "\"$text\"\n"; + } + } + } elsif ($state eq 'MSGID' and /^msgstr/) { + $state = 'MSGSTR'; + $need_fuzzy = 1 if /^msgstr ".+"/; + push @buffer, $_; + } elsif ($state eq 'MSGSTR' and /^".+"/) { + $need_fuzzy = 1; + push @buffer, $_; + } elsif ($state eq 'MSGSTR' and /^$/) { + print_buffer NEW, $need_fuzzy, @buffer; + @buffer = (); + $state = ''; + $need_fuzzy = 0; + print NEW; + } elsif (/^$/) { + print NEW @buffer; + @buffer = (); + print NEW; + } elsif ($state eq 'BUFFER' or $state eq 'MSGID' or $state eq 'MSGSTR') { + push @buffer, $_; + } else { + print NEW; + } + } + if ($state ne '' and @buffer) { + print_buffer NEW, $need_fuzzy, @buffer; + } + close NEW; + close OLD; + rename "$f.new", $f; +} diff --git a/po/bin/fixpot b/po/bin/fixpot new file mode 100755 index 0000000..1ed9665 --- /dev/null +++ b/po/bin/fixpot @@ -0,0 +1,27 @@ +#! /usr/bin/perl + +while(<>) { + if(/^\s*#|^\s*$/) { $msg[$cnt]{comment} .= $_; next } + if(s/^\s*msgid\b\s*//) { $cnt++; $id = 1 } + if(s/^\s*msgstr\b\s*//) { $id = 2 } + if($id == 1) { $msg[$cnt - 1]{id} .= $_; next } + if($id == 2) { $msg[$cnt - 1]{str} .= $_; next } + + die "oops at line $.\n"; +} + +for (@msg) { + print $_->{comment}; + + next unless defined($_->{id}) && defined($_->{str}); + + if($_->{id} =~ /^\s*""\s*$/ || $_->{str} =~ /^\s*""\s*$/) { + print "msgid ", $_->{id}; + print "msgstr ", $_->{str}; + } + else { + print "msgid ", $_->{str}; + print "msgstr \"\"\n"; + } +} + diff --git a/po/bin/po2txt b/po/bin/po2txt new file mode 100755 index 0000000..7d39dc6 --- /dev/null +++ b/po/bin/po2txt @@ -0,0 +1,182 @@ +#! /usr/bin/perl + +# convert *.po files to texts.* files suitable for gfxboot +# usage: po2txt lang.po >texts.lang +# Note: en.po ist treated specially! + +use Getopt::Long; +use IPC::Open2; + +sub read_texts; +sub join_msg; + +$opt_product = "SUSE Linux"; + +GetOptions( + 'product=s' => \$opt_product +); + + +for $lang (@ARGV) { + $lang = 'en' if $lang eq 'bootloader.pot'; + $lang =~ s/\.po$//; + read_texts $lang; +} + +sub read_texts +{ + local $_; + + my ($lang, @f, $txt, $context, $fuzzy, $t, $p, $ids, $file); + + $lang = shift; + + $file = "$lang.po"; + $file = 'bootloader.pot' if $lang eq 'en'; + + if($lang eq 'en') { + $ids = 1; + } + + open F, $file; + @f = (); + close F; + + map { s//$opt_product/g; } @f; + + $_ = $lang; + s/.*\///; + + for (@f) { + if(/^\s*#\.\s*(txt_\S+)/) { + if($txt) { + @msgstr = @msgid if $ids || $fuzzy || join_msg(\@msgstr) eq ""; + $txts{$txt} = join_msg(\@msgstr); + } + + $txt = $1; + + undef @msgid; + undef @msgstr; + undef $context; + undef $fuzzy; + next; + } + + if(/^\s*#,\s*fuzzy/) { + $fuzzy = 1; + next; + } + + next if /^\s*#.*|^\s*$/; + + if(/^\s*msgid\s*(\".*\")\s*$/) { + push @msgid, $1 unless $1 eq '""'; + $context = 1; + next; + } + + if(/^\s*msgstr\s*(\".*\")\s*$/) { + push @msgstr, $1 unless $1 eq '""'; + $context = 2; + next; + } + + if(/^\s*(\".*\")\s*$/) { + if($context == 1) { + push @msgid, $1; + } + elsif($context == 2) { + push @msgstr, $1; + } + else { + die "format oops in ${lang}.po: $_" + } + } + } + + if($txt) { + @msgstr = @msgid if $ids || $fuzzy || join_msg(\@msgstr) eq ""; + $txts{$txt} = join_msg(\@msgstr); + } + + @txts = sort keys %txts; + + for (@txts) { + $txt = $txts{$_}; + $txt =~ s/\\"/"/g; + $txt =~ s/\\\\/\\/g; + $txt =~ s/\\n/\n/g; + if($lang eq "he") + { + my $bidi_pid = open2(\*BIDI_OUT, \*BIDI_IN, 'fribidi', '--nopad', '--nobreak'); + print BIDI_IN $txt; + close BIDI_IN; + { local $/ = undef; $txt = ; } + $txt =~ s/(.)%/%$1/g; + waitpid $bidi_pid, 0; + } + print "$txt\x00" + } + + if($ids) { + open W, ">text.inc"; + print W "%\n% This file is generated automatically. Editing it is pointless.\n%\n\n"; + print W "/texts [\n"; + $p = pop @txts; + for (@txts) { print W " /$_\n" } + print W " /$p\n] def\n"; + close W; + } + else { + open F, "text.inc"; + for () { + if(/\s+\/(txt_\S+)/) { + $txt_ref{$1} = undef; + } + } + close F; + my (%txt_list, %txt_miss, %txt_unknown, %txt_multi); + for (@txts) { + $txt_list{$_}++; + $txt_multi{$_} = 1 if $txt_list{$_} > 1; + } + for (@txts) { + $txt_unknown{$_} = 1 unless exists $txt_ref{$_}; + } + for (keys %txt_ref) { + $txt_miss{$_} = 1 unless exists $txt_list{$_}; + } + + if(%txt_miss || %txt_unknown || %txt_multi) { + print STDERR "$lang:\n"; + for (sort keys %txt_miss) { + print STDERR " missing: $_\n" + } + for (sort keys %txt_unknown) { + print STDERR " unknown: $_\n" + } + for (sort keys %txt_multi) { + print STDERR " multi: $_\n" + } + } + } + +} + + +sub join_msg +{ + local $_; + my ($s, $msg, $m); + + $msg = shift; + + for $s (@{$msg}) { + $_ = $s; + s/^\"(.*)\"$/$1/; + $m .= $_; + } + + return $m; +} diff --git a/po/bin/rm_text b/po/bin/rm_text new file mode 100755 index 0000000..9b96555 --- /dev/null +++ b/po/bin/rm_text @@ -0,0 +1,63 @@ +#! /usr/bin/perl + +# remove a text from *.po files + +sub drop; + +die "usage: rm_text id\n" if @ARGV != 1; + +$id = shift; +$id = "txt_$id" unless $id =~ /^txt_/; + +mkdir old, 0755; + +for $f ("bootloader.pot", <*.po>) { + if(open F, $f) { + @f = ; + close F; + + ( $new, $old ) = drop @f; + if(open F, ">>old/$f") { + print F @$old; + close F; + + open F, ">$f"; + print F @$new; + close F; + } + } +} + + +sub drop +{ + local $_; + my (@f, @g, $drop_it, @d); + + for (@_) { + push @g, $_; + $drop_it = 1 if /^#\.\s*${id}\s*$/; + if(/^\s*$/) { + if($drop_it) { + push @d, @g; + } + else { + push @f, @g; + } + undef $drop_it; + undef @g; + } + } + + if(@g) { + if($drop_it) { + push @d, @g; + } + else { + push @f, @g; + } + } + + return ( \@f, \@d ); +} + diff --git a/po/bootloader.pot b/po/bootloader.pot new file mode 100644 index 0000000..9f515ad --- /dev/null +++ b/po/bootloader.pot @@ -0,0 +1,295 @@ +# LANGUAGE translations for boot loader +# Copyright (C) 2005 SUSE Linux GmbH +# +msgid "" +msgstr "" +"Project-Id-Version: bootloader\n" +"PO-Revision-Date: 2005-07-27 11:49+0200\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "" + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" + +#. txt_help +msgid "Help" +msgstr "" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "" + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "Enter your password: \n\n\n" +msgstr "" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "" + +#. txt_password +msgid "Password\n" +msgstr "" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "" + +#. txt_resolution +msgid "Resolution" +msgstr "" + +#. txt_videodrv +msgid "Video" +msgstr "" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "" diff --git a/po/bs.po b/po/bs.po new file mode 100644 index 0000000..263da79 --- /dev/null +++ b/po/bs.po @@ -0,0 +1,317 @@ +# Bosnian translation for gfxboot-theme-ubuntu +# Copyright (c) 2006 Rosetta Contributors and Canonical Ltd 2006 +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# FIRST AUTHOR , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2006-08-22 03:43:17.138284+00:00\n" +"PO-Revision-Date: 2014-06-21 01:22+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Uredu" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Odustani" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Ponovo pokreni" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Nastavi" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opcije za pokretanje sistema" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Izlazim..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Napuštate grafički meni i\n" +"pokrećete tekstualni interfejs." + +#. txt_help +msgid "Help" +msgstr "Pomoć" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Pokretač sistema" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Ulazno/izlana greška" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Promjenite boot disk" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Ubacite boot disk %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Ovo je boot disk %u.\n" +"Ubacite boot disk %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Ovo nije kompatibilan boot disk.\n" +"Molimo ubacite boot disk %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Lozinka" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Unesite svoju šifru: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD greška" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Ovo je dvoslojni DVD.Pokrenuli ste s druge strane.\n" +"\n" +"Okrenite DVD i onda nastavite." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Gašenje" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Zaustaviti sustav sada?" + +#. txt_password +msgid "Password\n" +msgstr "Lozinka\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Ostale opcije" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Lokalitet" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Raspored tastature" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Načini rada" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normalno" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Ekspertski način" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Pristupačnost" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Ništa" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Visoki kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Povećalo" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Čitač ekrana" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Brajev terminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modifikatori Tastature" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Tastatura na Ekranu" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Problemi sa Motorom - promijenite uređaj" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Sve" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Koristi disk za nadogradnju driver-a" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instaliraj radnu stanicu" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instaliraj server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM instalacije (za proizvođače)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instaliraj LAMP server" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instaliraj LTSP server" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instaliraj sistem komandne-linije" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Instaliraj minimalni sistem" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instalirajte minimalnu virtualnu mašinu" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Provjerite disk na nedostatke ili oštećenja" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Spasi oštećen sistem" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Testiraj ^memoriju" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Pokreni sa prvog fiksnog diska" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Samo besplatni softver" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell automatska reinstalacija" + +#. txt_resolution +msgid "Resolution" +msgstr "Rezolucija" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Zvuk" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..dbdecbc --- /dev/null +++ b/po/cs.po @@ -0,0 +1,319 @@ +# translation of cs.po to Czech +# translation of cs.po to cs_CZ +# translation of bootloader.po to cs_CZ +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Klara Cihlarova , 2004, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: cs\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:40+0000\n" +"Last-Translator: Vojtěch Trefný \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Zrušit" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Restartovat" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Pokračovat" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Volby startu" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Ukončuje se..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Opouštíte grafickou nabídku zavádění\n" +"a spouštíte textový režim." + +#. txt_help +msgid "Help" +msgstr "Nápověda" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Zavaděč" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Chyba I/O" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Změnit zaváděcí disk" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Vložte zaváděcí disk %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Toto je zaváděcí disk %u.\n" +"Vložte zaváděcí disk %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Toto není vyhovující zaváděcí disk.\n" +"Prosím vložte zaváděcí disk %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Heslo" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Zadejte své heslo: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Chyba DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Toto je oboustranné DVD. Spouštíte systém z druhé strany DVD.\n" +"\n" +"Obraťte prosím DVD a pokračujte." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Vypnout" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Chcete nyní vypnout systém?" + +#. txt_password +msgid "Password\n" +msgstr "Heslo\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Další možnosti" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Lokalizace" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Klávesnice" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Režimy" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normální" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Expertní režim" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Zpřístupnění" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Žádné" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Vysoký kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Lupa" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Čtečka obrazovky" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Braillův terminál" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modifikátory klávesnice" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Klávesnice na obrazovce" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Pohybové postižení - přepínací zařízení" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Vše" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Použít disk s aktualizacemi ovladačů" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Nainstalovat pracovní stanici" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Nainstalovat server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM instalace (pro výrobce)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Nainstalovat LAMP server" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Nainstalovat LTSP server" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Nainstalovat systém jen s příkazovou řádkou" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Nainstalovat minimální systém" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Nainstalovat minimalistický virtuální stroj" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "Zkontrolovat disk na ^chyby" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Zach^ránit poškozený systém" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Otestovat pa^měť" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Zavést systém z prvního pevného disku" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Pouze svobodný software" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "Automatická přeinstalace od ^Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Rozlišení" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Zvuk" diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..5e66663 --- /dev/null +++ b/po/da.po @@ -0,0 +1,320 @@ +# translation of da.po to Dansk +# translation of bootloader.pot_[g4TXCa].po to Dansk +# LANGUAGE translations for boot loader +# Copyright (C) 2005 SUSE Linux GmbH +# Martin Møller , 2005. +# M.P. Rommedahl , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Graphical Ubuntu bootloader - Danish translation\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:41+0000\n" +"Last-Translator: Aputsiaĸ Niels Janussen \n" +"Language-Team: dansk-gruppen \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" +"X-Poedit-Language: Danish\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "O.k." + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Annullér" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Genstart" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Fortsæt" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opstartsmuligheder" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Afslutter..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Du forlader nu den grafiske opstartsmenu og\n" +"starter tekstbrugerfladen." + +#. txt_help +msgid "Help" +msgstr "Hjælp" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Opstartsindlæser" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "I/O-fejl" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Skift opstartsdisk" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Indsæt opstartsdisk %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Dette er opstartsdisk %u.\n" +"Indsæt opstartsdisk %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Dette er ikke en gyldig opstartsdisk.\n" +"Indsæt venligst opstartsdisk %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Adgangskode" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Indtast din adgangskode: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Dvd-fejl" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Dette er en tosidet dvd. Du har startet den op fra den forkerte side.\n" +"\n" +"Vend dvd'en om og prøv igen." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Sluk maskinen" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Luk systemet ned nu?" + +#. txt_password +msgid "Password\n" +msgstr "Adgangskode\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Andet" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Lokalitet" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Tastatur" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Tilstande" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Ekspert-tilstand" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Tilgængelighed" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Ingen" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Høj kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Forstørrelsesglas" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Skærmlæser" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Blindskriftsterminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Tastatur-modifikationstaster" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Skærmtastatur" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Bevægelsesbesvær - omskifteenheder" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Alt" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Brug driveropdateringsdisk" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Installér en arbejdsstation" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Installér en server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-installation (for fabrikanter)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Installér en LAMP-server" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Installér en LTSP-server" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Installér et kommandolinjesystem" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Installér et minimalt system" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Installér en minimal virtuel maskine" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Tjek installationsmedie for defekter" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Genopret ødelagt system" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Test ^hukommelse" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Start op fra første harddisk" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Kun fri software" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell automatisk geninstallation" + +#. txt_resolution +msgid "Resolution" +msgstr "Opløsning" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Lyd" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..8ac9797 --- /dev/null +++ b/po/de.po @@ -0,0 +1,318 @@ +# translation of de.po to +# translation of de.po to German +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Antje Faber , 2004, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: de\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:41+0000\n" +"Last-Translator: Launchpad Translations Administrators \n" +"Language-Team: Novell Language \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Abbrechen" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Neu starten" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Fortfahren" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Startoptionen" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Wird beendet …" + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Sie verlassen das grafische Boot-Menü und\n" +"starten den Textmodus." + +#. txt_help +msgid "Help" +msgstr "Hilfe" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Boot-Loader" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Ein-/Ausgabefehler" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Startmedium wechseln" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Bitte legen Sie das Startmedium %u ein." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Dies ist das Startmedium %u.\n" +"Bitte legen Sie Startmedium %u ein." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Dies ist kein verwendbares Startmedium.\n" +"Bitte legen Sie Startmedium %u ein." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Passwort" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Bitte geben Sie Ihr Passwort ein: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD-Fehler" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Dies ist eine doppelseitige DVD. Sie haben von der zweiten Seite gestartet.\n" +"\n" +"Drehen Sie die DVD um und fahren Sie dann fort." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Ausschalten" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "System jetzt ausschalten?" + +#. txt_password +msgid "Password\n" +msgstr "Passwort\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Sonstiges" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Regionales" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Tastatur" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Optionen" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Expertenmodus" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Zugangshilfen" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Keine" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Hoher Kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Bildschirmlupe" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Bildschirmleser" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Braille-Terminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Tastaturmodifikatoren" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Bildschirmtastatur" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Motorische Probleme – Geräte wechseln" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Alle" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "CD/DVD mit Treiber-Aktualisierungen benutzen" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Eine Workstation installieren" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Einen Server installieren" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-Installation (für den Vertrieb)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Einen LAMP-Server installieren" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Einen LTSP-Server installieren" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Ein Befehlszeilensystem installieren" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Ein Minimalsystem installieren" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Eine minimale virtuelle Maschine installieren" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "CD/DVD auf Fehler ^prüfen" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Ein beschädigtes System ^reparieren" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Arbeits^speicher testen" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Von der ersten ^Festplatte starten" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Nur Freie Software" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell: Automatische Neuinstallation" + +#. txt_resolution +msgid "Resolution" +msgstr "Auflösung" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Sprache" diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..9abcebb --- /dev/null +++ b/po/es.po @@ -0,0 +1,319 @@ +# translation of es.po to +# translation of bootloader.po to +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# , 2004 +# Ines Pozo , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: es\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:41+0000\n" +"Last-Translator: Paco Molinero \n" +"Language-Team: Novell Language \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Aceptar" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Cancelar" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Reiniciar" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Continuar" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opciones de arranque" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Saliendo..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Está saliendo del menú gráfico de arranque e\n" +"iniciando la interfaz en modo texto." + +#. txt_help +msgid "Help" +msgstr "Ayuda" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Cargador de arranque" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Error de E/S" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Cambiar el disco de arranque" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Inserte el disco de arranque %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Este es el disco de arranque %u.\n" +"Inserte el disco de arranque %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Este no es un disco de arranque válido.\n" +"Inserte el disco de arranque %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Contraseña" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Introduzca su contraseña: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Error en el DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Este DVD es de doble cara. Ha arrancado desde la segunda cara.\n" +"\n" +"Dé la vuelta al DVD y continúe." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Apagar" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "¿Detener el sistema ahora?" + +#. txt_password +msgid "Password\n" +msgstr "Contraseña\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Otras opciones" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Ubicación" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Teclado" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Modos" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Modo experto" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Accesibilidad" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Ninguna" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Contraste alto" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Lupa" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Lector de pantalla" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminal Braille" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modificadores de teclado" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Teclado en pantalla" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Dificultades motoras - dispositivos de conmutación" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Todo" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Usar disco de actualización de controladores" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instalar una estación de trabajo" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instalar un servidor" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Instalación OEM (para fabricantes)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instalar un servidor LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instalar un servidor LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instalar un sistema sin entorno gráfico" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Instalar un sistema mínimo" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instalar una máquina virtual mínima" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Comprobar defectos en el disco" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Recuperar un sistema dañado" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Comprobar la ^memoria" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Arrancar desde el primer disco duro" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Solo software libre" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "Reinstalación automática de ^Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Resolución" + +#. txt_videodrv +msgid "Video" +msgstr "Vídeo" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Sonido" diff --git a/po/et.po b/po/et.po new file mode 100644 index 0000000..21acc66 --- /dev/null +++ b/po/et.po @@ -0,0 +1,317 @@ +# Estonian translation for gfxboot-theme-ubuntu +# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# FIRST AUTHOR , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2006-03-18 12:14:59.394968+00:00\n" +"PO-Revision-Date: 2013-12-15 11:42+0000\n" +"Last-Translator: Launchpad Translations Administrators \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Olgu" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Katkesta" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Taaskäivita" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Jätka" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Alglaadimise valikud" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Väljumine..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Oled lahkumas graafilisest alglaadimismenüüst ning\n" +"alustad tekstiliidese kasutamist." + +#. txt_help +msgid "Help" +msgstr "Abi" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Alglaadur" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "S/V viga" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Alglaadimisketta vahetus" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Sisesta alglaadimisketas %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"See on alglaadimisketas %u.\n" +"Sisesta alglaadimisketas %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"See pole sobiv alglaadimisketas.\n" +"Palun sisesta alglaadimisketas %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Parool" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Sisesta oma parool: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD viga" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"See on kahepoolne DVD. Sa alustasid laadimist teiselt poolelt.\n" +"\n" +"Pööra DVD ümber ja jätka." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Lülita välja" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Kas seisata süsteem kohe?" + +#. txt_password +msgid "Password\n" +msgstr "Parool\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Muud valikud" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Keeleseadistused" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Klahvistik" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Režiim" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Tavaline" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Asjatundjale" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Hõlbustus" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Puudub" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Kõrge kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Luup" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Ekraanilugeja" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Braille terminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Muuteklahvid" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Ekraaniklaviatuur" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Raskused mootoriga - vaheta seadmeid" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Kõik" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Draiveriuuenduste plaadi kasutamine" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Paigalda tööjaam" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Paigalda server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-paigaldus (tootjatele)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Paigalda LAMP server" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Paigalda LTSP server" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Paigalda käsureasüsteem" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Paigalda minimaalne süsteem" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Paigalda minimaalne virtuaalmasin" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "Tee plaadile vigade ^kontroll" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Pa^randa rikutud süsteem" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Mälutest" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Tee ^alglaadimine esimeselt kõvakettalt" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Ainult vaba tarkvara" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Delli automaatne taaspaigaldus" + +#. txt_resolution +msgid "Resolution" +msgstr "Eraldusvõime" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Heli" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 0000000..1ab8e9c --- /dev/null +++ b/po/fi.po @@ -0,0 +1,318 @@ +# translation of bootloader.fi.po to +# translation of bootloader.po to +# LANGUAGE translations for boot loader +# Copyright (C) 2005 SUSE Linux GmbH +# Jyri Palokangas , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: bootloader.fi\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:42+0000\n" +"Last-Translator: Launchpad Translations Administrators \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Peru" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Käynnistä uudelleen" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Jatka" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Käynnistysvalinnat" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Poistutaan..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Olet poistumassa graafisesta käynnistysvalikosta ja\n" +"käynnistämässä tekstipohjaisen käyttöliittymän." + +#. txt_help +msgid "Help" +msgstr "Ohje" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Käynnistyslataaja" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Siirräntävirhe" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Vaihda käynnistyslevy" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Anna käynnistyslevy %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Tämä on käynnistyslevy %u.\n" +"Anna käynnistyslevy %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Tämä ei ole kelvollinen käynnistyslevy.\n" +"Aseta käynnistyslevy %u asemaan." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Salasana" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Anna salasanasi: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD-virhe" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Tämä on kaksipuoleinen DVD. Olet käynnistänyt kakkospuolelta.\n" +"\n" +"Käännä DVD toisinpäin ja jatka sitten." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Sammuta" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Pysäytetäänkö järjestelmä nyt?" + +#. txt_password +msgid "Password\n" +msgstr "Salasana\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Muut valinnat" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Maa-asetukset" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Näppäimistö" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Tilat" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Tavallinen" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Asiantuntijatila" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Esteettömyys" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Ei mikään" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Suuri kontrasti" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Suurennuslasi" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Näytönluku" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Pistekirjoituspääte" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Asettelun valinnat" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Näppäimistö näytöllä" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Motoriset vaikeudet - valintalaitteet" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Kaikki" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Käytä ajuripäivityslevyä" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Työasema-asennus" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Palvelinasennus" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-asennus (laitevalmistajille)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Asenna LAMP-palvelin" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Asenna LTSP-palvelin" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Asenna komentorivijärjestelmä" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Asenna minimaalinen järjestelmä" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Asenna minimaalinen virtuaalikone" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Tarkista levyn virheettömyys" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Korjaa rikkinäinen järjestelmä" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Muistin tarkistus" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Käynnistä ^ensimmäiseltä kiintolevyltä" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Vain vapaita ohjelm." + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dellin automaattinen uudelleenasennus" + +#. txt_resolution +msgid "Resolution" +msgstr "Tarkkuus" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Ääni" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..ae5c970 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,321 @@ +# translation of po_bootloader-fr.po to French +# translation of fr.po to +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# +# Patricia Vaz , 2004. +# Patricia Vaz , 2004. +# Patricia Vaz , 2005. +# Bruno Patri , 2008. +msgid "" +msgstr "" +"Project-Id-Version: po_bootloader-fr\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2014-07-13 16:46+0000\n" +"Last-Translator: Éfrit \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Ok" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Annuler" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Redémarrer" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Continuer" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Options d'amorçage" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Fermeture..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Vous quittez le menu d'amorçage graphique et\n" +"accédez à l'interface en mode texte." + +#. txt_help +msgid "Help" +msgstr "Aide" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Chargeur d'amorçage" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Erreur d'E/S" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Changer de disque d'amorçage" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Insérer le disque d'amorçage %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Ceci est le disque d'amorçage %u.\n" +"Insérez le disque d'amorçage %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Ce n’est pas un disque d’amorçage adéquat.\n" +"Veuillez insérer un disque d’amorçage %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Mot de passe" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Saisissez votre mot de passe : \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Erreur de DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Ceci est un DVD double face. Vous avez amorcé à partir de la seconde face.\n" +"\n" +"Retournez le DVD puis continuez." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Extinction" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Arrêter le système maintenant ?" + +#. txt_password +msgid "Password\n" +msgstr "Mot de passe\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Autres options" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Localisation" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Agencement du clavier" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Modes" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Mode expert" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Accessibilité" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Aucun" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Contraste élevé" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Loupe" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Lecteur d'écran" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminal Braille" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modificateurs de clavier" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Clavier à l'écran" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Difficultés motrices - interrupteurs" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Tout" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Utiliser le disque de mises à jour de pilotes" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Installer un poste de travail" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Installer un serveur" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Installation OEM (pour les intégrateurs)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Installer un serveur LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Installer un serveur LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Installer un système en ligne de commande" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Installer un sytème minimal" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Installer une machine virtuelle minimale" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Vérifier si le disque a des défauts" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Récupérer un système endommagé" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Tester la ^mémoire" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Amorcer à partir du premier disque dur" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Uniquement des logiciels libres" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Réinstallation automatique Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Résolution vidéo" + +#. txt_videodrv +msgid "Video" +msgstr "Vidéo" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Áudio" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 0000000..8fe1370 --- /dev/null +++ b/po/hr.po @@ -0,0 +1,317 @@ +# Croatian translation for gfxboot-theme-ubuntu +# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# FIRST AUTHOR , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2006-03-18 12:14:59.394968+00:00\n" +"PO-Revision-Date: 2012-05-14 16:21+0000\n" +"Last-Translator: Saša Teković \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Otkaži" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Ponovo pokreni" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Nastavi" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Mogućnosti podizanja sustava" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Izlazak..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Napuštate grafički izbornik i\n" +"pokrećete tekstualno sučelje." + +#. txt_help +msgid "Help" +msgstr "Pomoć" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Boot učitavač" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "I/O greška" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Promijenite boot disk" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Umetnite boot disk %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Ovo je boot disk %u.\n" +"Umetnite boot disk %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Ovo nije ispravan boot disk.\n" +"Molim umetnite boot disk %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Lozinka" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Upišite svoju lozinku: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD greška" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Ovo je dvoslojni DVD. Podigli ste sustav s druge strane.\n" +"\n" +"Okrenite DVD i nastavite." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Isključivanje" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Zaustaviti sustav odmah?" + +#. txt_password +msgid "Password\n" +msgstr "Lozinka\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Opcije" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Lokalno" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Raspored tipkovnice" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Načini" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normalno" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Napredno" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Pristupačnost" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Ništa" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Veliki kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Povećalo" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Čitač ekrana" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Brailov terminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Parametri tipkovnice" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Tipkovnica na ekranu" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Motoričke poteškoće - zamjeni uređaje" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Sve" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Koristi medij nadograđenih upravljačkih programa" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instaliraj radnu stanicu" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instaliraj poslužitelja" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM instalacija (za proizvođače)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instaliraj LAMP poslužitelja" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instaliraj LTSP poslužitelja" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instaliraj komandno-linijski sustav" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Instaliraj minimalni sustav" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instaliraj minimalni virtualni stroj" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Provjeri disk za oštećenja" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Spasi uništeni sustav" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Testiraj ^memoriju" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Podigni s prvog čvrstog diska" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Samo slobodni softver" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dellova automatska reinstalacija" + +#. txt_resolution +msgid "Resolution" +msgstr "Razlučivost" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "Auto" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Audio" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 0000000..3515f0c --- /dev/null +++ b/po/hu.po @@ -0,0 +1,320 @@ +# translation of hu.po to Hungarian +# translation of bootloader.hu.po to hungarian +# translation of bootloader.po to hungarian +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Marcel Hilzinger , 2004. +# Szabolcs Varga , 2004, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: hu\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2013-12-15 11:42+0000\n" +"Last-Translator: Úr Balázs \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Mégse" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Újraindítás" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Folytatás" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Paraméterek" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Kilépés..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Kilép a grafikus rendszerindító menüből.\n" +"El fog indulni a szöveges módú felület." + +#. txt_help +msgid "Help" +msgstr "Súgó" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Rendszertöltő" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "I/O hiba" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Cserélje az indítólemezt" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Kérem, helyezze be a(z) %u indítólemezt." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Ez a(z) %u indítólemez.\n" +"Kérem, helyezze be a(z) %u indítólemezt." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Ez nem egy megfelelő indítólemez.\n" +"Kérem, helyezze be a(z) %u indítólemezt." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Jelszó" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Kérem, adja meg a jelszót: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD-hiba" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Ez egy kétoldalas DVD. Ön a rendszerindításhoz a második oldalt használta.\n" +"\n" +"Kérem, fordítsa meg a DVD-t, majd folytassa." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Gép kikapcsolása" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Ki akarja most kapcsolni a számítógépet?" + +#. txt_password +msgid "Password\n" +msgstr "Jelszó\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Beállítások" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Nyelvi beállítások" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Billentyűzet" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Módok" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normál" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Szakértő mód" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Akadálymentesítés" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Nincs" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Nagy kontraszt" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Nagyító" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Képernyőolvasó" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Braille terminál" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Bilentyűzetmódosítók" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Képernyő-billentyűzet" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Mozgási nehézségek - kapcsolóeszközök" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Minden" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Meghajtófrissítő-lemez használata" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Munkaállomás telepítése" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Kiszolgáló telepítése" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM telepítés (gyártók számára)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "LAMP kiszolgáló telepítése" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "LTSP kiszolgáló telepítése" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Parancssoros rendszer telepítése" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Minimális rendszer telepítése" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Minimális virtuális gép telepítése" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Lemez hibaellenőrzése" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Sérült rendszer javítása" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Memóriateszt" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Rendszerindítás az első merevlemezről" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Csak szabad szoftver" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell automatikus újratelepítés" + +#. txt_resolution +msgid "Resolution" +msgstr "Felbontás" + +#. txt_videodrv +msgid "Video" +msgstr "Videó" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Hang" diff --git a/po/is.po b/po/is.po new file mode 100644 index 0000000..6bf51fb --- /dev/null +++ b/po/is.po @@ -0,0 +1,319 @@ +# Icelandic translation for gfxboot-theme-ubuntu +# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 +# The translations are Copyright (C) of the contributing translators. +# Copyright (C) 2010, 2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# +# Sveinn í Felli , 2010, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-10-05 17:50+0000\n" +"PO-Revision-Date: 2014-04-18 20:36+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Samþykkt" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Hætta Við" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Endurræsa" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Áfram" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Ræsivalmöguleikar" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Hætti..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Þú ert að fara úr myndrænu viðmóti\n" +"yfir í textaviðmót." + +#. txt_help +msgid "Help" +msgstr "Hjálp" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Ræsistjóri" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Inntaks/úttaksvilla" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Skipta um ræsidisk" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Settu inn ræsidisk %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Þetta er ræsidiskur %u.\n" +"Settu inn ræsidisk %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Þetta er ekki gjaldgengur ræsidiskur.\n" +"Vinsamlegast settu inn ræsidisk %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Lykilorð" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Sláðu inn lykilorðið þitt: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD-villa" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Þetta er tveggja hliða DVD-diskur. Þú hefur ræst af seinni hliðinni.\n" +"\n" +"Snúðu disknum á hina hliðina og haltu síðan áfram." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Slökkva" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Stöðva kerfið núna?" + +#. txt_password +msgid "Password\n" +msgstr "Lykilorð\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Aðrar stillingar" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Landsstaðall" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Lyklaborðsvörpun" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Leiðir" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Venjulegt" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Fyrir sérfræðinga" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Auðveldað aðgengi" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Ekkert" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Mikil birtuskil" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Skjástækkun" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Skjálesari" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Skjár með blindraletri" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Flýtilyklar" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Lyklaborð á skjá" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Hreyfihamlaðir - skipta um tæki" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Allt" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Nota uppfærsludisk fyrir rekla" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Setja upp vinnustöð" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Setja upp þjón" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM uppsetning (fyrir framleiðendur)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Setja upp LAMP þjón" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Setja upp LTSP þjón" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Setja upp skipanalínukerfi" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Setja upp lágmarkskerfi" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Setja upp lágmarkssýndarvél" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Leita að villum á diskinum" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Bjarga biluðu kerfi" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Prófa minni" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Keyra af fyrsta harða diski" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Aðeins frjáls hugbúnaður" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell sjálfvirk enduruppsetning" + +#. txt_resolution +msgid "Resolution" +msgstr "" + +#. txt_videodrv +msgid "Video" +msgstr "" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "" diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..b536460 --- /dev/null +++ b/po/it.po @@ -0,0 +1,319 @@ +# translation of it.po to +# translation of it.po to +# translation of bootloader.po to +# translation of bootloader.po to +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +msgid "" +msgstr "" +"Project-Id-Version: it\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:41+0000\n" +"Last-Translator: Milo Casagrande \n" +"Language-Team: Novell Language \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Annulla" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Riavvia" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Continua" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opzioni di boot" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Uscita..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Uscita dal menù di boot grafico\n" +"e avvio dell'interfaccia testuale." + +#. txt_help +msgid "Help" +msgstr "Aiuto" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Boot loader" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Errore di I/O" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Cambio disco di boot" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Inserire il disco di boot %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Questo è il disco di boot %u.\n" +"Inserire il disco di boot %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Questo non è il disco di boot adatto.\n" +"Inserire il disco di boot %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Password" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Inserire la propria password: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Errore del DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Questo è un DVD a doppia faccia. È stato fatto il boot dalla seconda " +"faccia.\n" +"\n" +"Capovolgere il DVD e continuare." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Spegnimento" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Arrestare il sistema adesso?" + +#. txt_password +msgid "Password\n" +msgstr "Password\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Altre opzioni" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Impostazioni nazionali" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Tastiera" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Modalità" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normale" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Modalità esperto" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Accessibilità" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Niente" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Contrasto elevato" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Ingranditore" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Lettore di schermo" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminale Braille" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modificatori di tastiera" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Tastiera a schermo" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Difficoltà motorie - dispositivi interruttore" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Tutto" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Usa disco di aggiornamento driver" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Installa una workstation" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Installa un server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Installazione OEM (per assemblatori)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Installa un server LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Installa un server LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Installa un sistema a riga di comando" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Installa un sistema minimale" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Installa un macchina virtuale minimale" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Controlla difetti sul disco" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Ripristina un sistema danneggiato" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Test della ^memoria" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Boot dal primo disco rigido" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Solo software libero" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "Reinstallazione automatica ^Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Risoluzione" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Audio" diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 0000000..f4828a5 --- /dev/null +++ b/po/kk.po @@ -0,0 +1,317 @@ +# Kazakh translation for gfxboot-theme-ubuntu +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2009-07-01 23:49+0000\n" +"PO-Revision-Date: 2013-05-03 20:21+0000\n" +"Last-Translator: Almas \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "ОК" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Болдырмау" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Қайта жүктеу" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Жалғастыру" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Жүктелу баптаулары" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Шығу..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Сіз жүктелудің графикалық мәзірінен шықтыңыз және\n" +"мәтіндік режимге ауыстыңыз" + +#. txt_help +msgid "Help" +msgstr "Көмек" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Жүктеуші" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Енгізу/шығару қатесі" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Жүктелу дискісін ауыстыру" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "%u жүктелу дискісін салыңыз." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Бұл - %u жүктелу дискі.\n" +"%u жүктелу дискісін салыңыз." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Бұл жүктелу дискі жарамайды.\n" +"%u жүктелу дискісін салыңыз." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Құпия сөз" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Құпия сөзіңізді енгізіңіз: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD қатесі" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Бұл - екі жақты DVD дискі. Сіз оның екінші жағынан жүктелдіңіз.\n" +"\n" +"DVD дискіні аударып, жалғастырыңыз." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Сөндіру" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Жүйені қазір тоқтатуды қалайсыз ба?" + +#. txt_password +msgid "Password\n" +msgstr "Құпия сөз\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Параметрлер" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Жергіліткіші" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Пернетақта" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Режимдер" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Қалыпты" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Кеңейтілген режим" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Арн. мүмкін-тер" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Жоқ" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Жоғары контраст" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Экрандағы ұлғайтқыш" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Экраннан оқу бағдарламасы" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Брайль терминалы" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Пернетақта модификаторлары" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Экрандағы пернетақта" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Қозғалысы бұзылған адамдар үшін - ауыстыру құралдары" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Барлығын" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Драйверлерді жаңарту дискін қолдану" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Жұмыс станциясын орнату" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Серверді орнату" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM орнату режимі (өндірушілер үшін)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "^LAMP серверін орнату" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "^LTSP серверін орнату" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Тек коммандалық жол бар (графикалық интерфейссіз) жүйені орнату" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Минималды жүйені орнату" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Минималды виртуалды машина орнату" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Диск бүтіндігін тексеру" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Бұзылған жүйені қалпына келтіру режимі" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Жадыны тексеру" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Бірінші қатты дискіден жүктелу" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Тек тегін (еркін) бағдарламаларды орнату" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell автоматты орнату" + +#. txt_resolution +msgid "Resolution" +msgstr "Айырымдылығы" + +#. txt_videodrv +msgid "Video" +msgstr "Видео" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Аудио" diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 0000000..6aad2f3 --- /dev/null +++ b/po/lt.po @@ -0,0 +1,315 @@ +# LITHUANIAN translations for boot loader +# Copyright (C) 2005 SUSE Linux GmbH +# +msgid "" +msgstr "" +"Project-Id-Version: bootloader\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2014-10-22 11:42+0000\n" +"Last-Translator: Marius Gedminas \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Gerai" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Atsisakyti" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Paleisti iš naujo" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Tęsti" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Papildomi parametrai" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Išeinama..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Paliksite grafinį paleidimo meniu ir\n" +"paleisite tekstinę sąsają." + +#. txt_help +msgid "Help" +msgstr "Pagalba" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Sistemų įkėliklis" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Įvesties/išvesties klaida" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Keisti paleidimo diską" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Įdėkite %u paleidimo diską." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Tai %u paleidimo diskas.\n" +"Įdėkite %u paleidimo diską." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Tai netinkamas paleidimo diskas.\n" +"Įdėkite %u paleidimo diską." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Slaptažodis" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Įveskite savo slaptažodį: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD klaida" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Tai dvipusis DVD. Paleidote jį iš antrosios pusės.\n" +"\n" +"Apverskite DVD ir tęskite." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Išjungti" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Ar sustabdyti sistemą dabar?" + +#. txt_password +msgid "Password\n" +msgstr "Slaptažodis\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Kiti" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Lokalė" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Klaviatūra" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Būdai" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Įprastas" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Eksperto režimas" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Prieinamumas" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Nieko" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Labai kontrastingas" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Lupa" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Ekrano skaitymas balsu" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Brailio terminalas" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Klaviatūros modifikatoriai" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Klaviatūra ekrane" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Motorikos sutrikimai - perjungti įrenginius" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Viskas" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Naudoti valdyklių atnaujinimo diską" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Įdiegti darbo vietos variantą" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Įdiegti serverio variantą" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM įdiegimas (kompiuterių gamintojams ar pardavėjams)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Įdiegti LAMP serverio variantą" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Įdiegti LTSP serverio variantą" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Įdiegti sistemą su komandinės eilutės aplinka" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Įdiegti minimalią sistemą" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Įdiegti minimalią virtualią mašiną" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Patikrinti, ar nėra defektų paleidimo laikmenoje" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Pa^taisyti sugadintą sistemą" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Patikrinti operatyviąją ^atmintį (RAM)" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "P^aleisti sistemą iš pirmojo kompiuterio disko" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Tik laisva programinė įranga" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Automatinis įdiegimas iš naujo" + +#. txt_resolution +msgid "Resolution" +msgstr "Raiška" + +#. txt_videodrv +msgid "Video" +msgstr "Vaizdas" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Audio" diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 0000000..60335c7 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,317 @@ +# Latvian translation for gfxboot-theme-ubuntu +# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# FIRST AUTHOR , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2006-03-18 12:14:59.394968+00:00\n" +"PO-Revision-Date: 2013-12-15 11:42+0000\n" +"Last-Translator: Jānis Marks Gailis \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Labi" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Atcelt" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Pārstartēt" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Turpināt" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Palaišanas opcijas" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Iziet..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Jūs atstājat grafisko sāknēšanas izvēlni un\n" +"palaižat teksta režīma saskarni." + +#. txt_help +msgid "Help" +msgstr "Palīdzība" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Palaidējs" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "I/O kļūda" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Nomainīt palaišanas disku" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Ievietojiet palaišanas disku %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Šis ir palaišanas disks %u.\n" +"Ievietojiet palaišanas disku %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Šis nav derīgs palaišanas disks.\n" +"Lūdzu ievietojiet palaišanas disku %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Parole" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Ievadiet jūsu paroli: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD Kļūda" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Šajā DVD diskā dati ierakstīti no abām pusēm. Jūs esat palaidis to no otras " +"puses.\n" +"Apgrieziet disku otrādi un turpiniet." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Izslēgt" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Apturēt sistēmu tagad?" + +#. txt_password +msgid "Password\n" +msgstr "Parole\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Citas opcijas" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Lokāle" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Taustiņkarte" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Režīmi" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normāls" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Eksperta režīms" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Pieejamība" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Nekas" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Spēcīgs kontrasts" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Lupa" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Ekrāna lasītājs" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Braila terminālis" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Tastatūras izkārtojuma mainītāji" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Ekrāna tastatūra" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Motorisko kustību traucējumi - pārslēgšanas ierīces" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Viss" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Izmantot draiveru atjauninājumu disku" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instalēt darbstaciju" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instalēt serveri" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM instalēšana (ražotājiem)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instalēt LAMP serveri" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instalēt LTSP serveri" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instalēt komandrindas sistēmu" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Uzstādīt minimālu sistēmu" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instalēt minimālu virtuālo mašīnu" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Pārbaudīt, vai diskā nav kļūdu" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Atjaunot bojātu sistēmu" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Pārbaudīt operatīvo at^miņu" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Ielādē^t sistēmu no pirmā diska" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Tikai brīvo programmatūru" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell automātiskā pārinstalēšana" + +#. txt_resolution +msgid "Resolution" +msgstr "Izšķirtspēja" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Audio" diff --git a/po/nl_BE.po b/po/nl_BE.po new file mode 100644 index 0000000..fa8f02d --- /dev/null +++ b/po/nl_BE.po @@ -0,0 +1,320 @@ +# translation of bootloader.po to Nederlands +# translation of bootloader.po to Dutch +# translation of nl.po to Dutch +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Proefgelezen op 10-08-2005 door Henk Krus +# Arthur & Ettie Kerkmeester , 2004, 2005. +# Rinse de Vries , 2005. +msgid "" +msgstr "" +"Project-Id-Version: nl\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-18 09:39+0000\n" +"Last-Translator: Hannie Dumoleyn \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Annuleren" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Herstarten" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Verder" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opstartopties" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Bezig met afsluiten…" + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"U verlaat nu het grafische opstartmenu,\n" +"de tekstomgeving wordt gestart." + +#. txt_help +msgid "Help" +msgstr "Hulp" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Opstartlader" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Fout bij in-/uitvoer" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Opstartschijf wijzigen" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Plaats opstartschijf %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Dit is opstartschijf %u.\n" +"Plaats opstartschijf %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Dit is geen geschikte opstartschijf.\n" +"Plaats opstartschijf %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Wachtwoord" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Voer uw wachtwoord in: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD-fout" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Dit is een dubbelzijdige DVD. U heeft met kant twee opgestart.\n" +"\n" +"Draai de DVD om en ga dan verder." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Computer uitschakelen" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Wilt u de computer nu uitschakelen?" + +#. txt_password +msgid "Password\n" +msgstr "Wachtwoord\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Overige opties" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Taalregio" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Toetsenbordindeling" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Modi" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normaal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Geavanceerde modus" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Toegankelijkheid" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Geen" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Hoog contrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Vergrootglas" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Schermlezer" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Braille-terminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Combinatietoetsen" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Schermtoetsenbord" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Toetsenbord voor mensen met een motorische beperking" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Alles" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Schijf met bijgewerkte stuurprogramma's gebruiken" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Een werkstation installeren" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Een server installeren" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-installatie (voor fabrikanten)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Een LAMP-server installeren" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Een LTSP-server installeren" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Een opdrachtregelsysteem installeren" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Een minimaal systeem installeren" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Een minimale virtuele machine installeren" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "S^chijf op fouten controleren" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Een beschadigd systeem he^rstellen" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Geheugenproef uitvoeren" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Vanaf de eerste harde schijf ^opstarten" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Alleen vrije software" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell automatische herinstallatie" + +#. txt_resolution +msgid "Resolution" +msgstr "Resolutie" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "Auto" + +#. txt_no_composite +msgid "No Composite" +msgstr "No Composite" + +#. txt_audio +msgid "Audio" +msgstr "Geluid" diff --git a/po/nl_NL.po b/po/nl_NL.po new file mode 100644 index 0000000..fa8f02d --- /dev/null +++ b/po/nl_NL.po @@ -0,0 +1,320 @@ +# translation of bootloader.po to Nederlands +# translation of bootloader.po to Dutch +# translation of nl.po to Dutch +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Proefgelezen op 10-08-2005 door Henk Krus +# Arthur & Ettie Kerkmeester , 2004, 2005. +# Rinse de Vries , 2005. +msgid "" +msgstr "" +"Project-Id-Version: nl\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-18 09:39+0000\n" +"Last-Translator: Hannie Dumoleyn \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Annuleren" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Herstarten" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Verder" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opstartopties" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Bezig met afsluiten…" + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"U verlaat nu het grafische opstartmenu,\n" +"de tekstomgeving wordt gestart." + +#. txt_help +msgid "Help" +msgstr "Hulp" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Opstartlader" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Fout bij in-/uitvoer" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Opstartschijf wijzigen" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Plaats opstartschijf %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Dit is opstartschijf %u.\n" +"Plaats opstartschijf %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Dit is geen geschikte opstartschijf.\n" +"Plaats opstartschijf %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Wachtwoord" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Voer uw wachtwoord in: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD-fout" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Dit is een dubbelzijdige DVD. U heeft met kant twee opgestart.\n" +"\n" +"Draai de DVD om en ga dan verder." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Computer uitschakelen" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Wilt u de computer nu uitschakelen?" + +#. txt_password +msgid "Password\n" +msgstr "Wachtwoord\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Overige opties" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Taalregio" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Toetsenbordindeling" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Modi" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normaal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Geavanceerde modus" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Toegankelijkheid" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Geen" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Hoog contrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Vergrootglas" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Schermlezer" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Braille-terminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Combinatietoetsen" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Schermtoetsenbord" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Toetsenbord voor mensen met een motorische beperking" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Alles" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Schijf met bijgewerkte stuurprogramma's gebruiken" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Een werkstation installeren" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Een server installeren" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-installatie (voor fabrikanten)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Een LAMP-server installeren" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Een LTSP-server installeren" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Een opdrachtregelsysteem installeren" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Een minimaal systeem installeren" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Een minimale virtuele machine installeren" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "S^chijf op fouten controleren" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Een beschadigd systeem he^rstellen" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Geheugenproef uitvoeren" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Vanaf de eerste harde schijf ^opstarten" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Alleen vrije software" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell automatische herinstallatie" + +#. txt_resolution +msgid "Resolution" +msgstr "Resolutie" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "Auto" + +#. txt_no_composite +msgid "No Composite" +msgstr "No Composite" + +#. txt_audio +msgid "Audio" +msgstr "Geluid" diff --git a/po/nn.po b/po/nn.po new file mode 100644 index 0000000..d0af7fc --- /dev/null +++ b/po/nn.po @@ -0,0 +1,317 @@ +# Norwegian Nynorsk translation for gfxboot-theme-ubuntu +# Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# FIRST AUTHOR , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2007-02-28 07:00:57.592902+00:00\n" +"PO-Revision-Date: 2011-10-21 17:09+0000\n" +"Last-Translator: Martin Myrvold \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Avbryt" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Start om att" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Hald fram" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Oppstartalternativ" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Avsluttar …" + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Du forlet den grafiske oppstartsmenyen \n" +"og går over til tekstmodus." + +#. txt_help +msgid "Help" +msgstr "Hjelp" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Oppstartslastar" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "I/U-feil" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Byt oppstartsdisk" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Set inn oppstartsdisk %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Dette er oppstartsdisk %u.\n" +"Set inn oppstartsdisk %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Dette er ikkje ein brukbar oppstartsdisk.\n" +"Set inn oppstartsdisk %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Passord" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Skriv passordet ditt: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD-feil" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Dette er ei tosidig DVD-plate. Du har starta opp frå side to.\n" +"\n" +"Snu DVD-en og hald fram." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Slå av maskina" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Vil du avslutta no?" + +#. txt_password +msgid "Password\n" +msgstr "Passord\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Andre innstillingar" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Locale" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Tastaturkart" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Modus" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Vanleg" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Ekspertmodus" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Tilgjenge" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Ingen" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Høgkontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Forstørringsglas" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Skjermlesar" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Blindeskriftterminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Tastataturendringar" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Skjermtastatur" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Motoriske vanskar - switcheiningar" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Alt" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Bruk plate med drivaroppdateringar" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Installer ein arbeidsstasjon" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Installer ein tenar" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM installasjon (for produsentar)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Installer ein LAMP-tenar" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Installer ein LTSP-tenar" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Installer eit kommandolinjesystem" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Installer eit minimalt system" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Installer ei minimal virtuell maskin" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Sjekk plata for feil" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Reparer eit øydelagt system" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Test minnet" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Oppstart frå fyrste harddisk" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Berre fri programvare" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Dell automatisk reinstallasjon" + +#. txt_resolution +msgid "Resolution" +msgstr "" + +#. txt_videodrv +msgid "Video" +msgstr "" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..2f573f0 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,315 @@ +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# +msgid "" +msgstr "" +"Project-Id-Version: bootloader\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:41+0000\n" +"Last-Translator: GTriderXC \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Anuluj" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Uruchom ponownie" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Kontynuuj" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opcje rozruchu" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Kończenie..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Opuszczasz graficzne menu uruchamiania i\n" +"rozpoczynasz tryb interfejsu tekstowego." + +#. txt_help +msgid "Help" +msgstr "Pomoc" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Program rozruchowy" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Błąd wejścia/wyjścia" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Zmiana nośnika rozruchowego" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Proszę wsunąć nośnik rozruchowy %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"To jest nośnik rozruchowy %u.\n" +"Proszę wsunąć nośnik rozruchowy %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"To nie jest odpowiedni nośnik rozruchowy.\n" +"Proszę wsunąć nośnik rozruchowy %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Hasło" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Proszę wprowadzić hasło: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Błąd DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"To jest dwustronna płyta DVD. Uruchomiono system z drugiej strony płyty.\n" +"\n" +"Proszę odwrócić płytę DVD i kontynuować." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Wyłącz komputer" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Zatrzymać działanie systemu?" + +#. txt_password +msgid "Password\n" +msgstr "Hasło\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Inne opcje" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Ustawienia regionalne" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Układ klawiatury" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Tryby" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Zwykły" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Tryb zaawansowany" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Ułatwienia dostępu" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Brak" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Wysoki kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Lupa" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Czytnik ekranu" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminal Braille'a" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modyfikatory klawiatury" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Klawiatura ekranowa" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Problemy ruchowe - urządzenia przełączające" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Wszystko" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Użycie nośnika aktualizującego sterowniki" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instalacja stacji roboczej" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instalacja serwera" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Instalacja OEM (dla producentów sprzętu)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instalacja serwera LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instalacja serwera LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instalacja systemu opartego o wiersz poleceń" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Instalacja systemu minimalnego" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instalacja minimalnej maszyny wirtualnej" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Sprawdź płytę pod kątem błędów odczytu" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Napraw uszkodzony system" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Sprawdź ^pamięć" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Uruchom system z pierwszego dysku twardego" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Tylko wolne oprogramowanie" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Automatyczna reinstalacja Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Rozdzielczość" + +#. txt_videodrv +msgid "Video" +msgstr "Wideo" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Dźwięk" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 0000000..9d81f68 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,318 @@ +# translation of pt.po to portuguese +# LANGUAGE translations for boot loader +# Copyright (C) 2005 SUSE Linux GmbH +# Antonio Cardoso Martins , 2005. +# Elisio Andre Martins Catana , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: pt\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2014-10-25 10:23+0000\n" +"Last-Translator: Alfredo Silva \n" +"Language-Team: portuguese\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Cancelar" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Reiniciar" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Continuar" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opções de Arranque" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "A sair..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Está a sair do menu gráfico de arranque e\n" +"a iniciar a interface em modo texto." + +#. txt_help +msgid "Help" +msgstr "Ajuda" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Carregador de arranque" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Erro de I/O" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Alterar Disco de Arranque" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Insira o disco de arranque %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Este é o disco de arranque %u.\n" +"Insira o disco de arranque %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Este não é um disco de arranque adequado.\n" +"Por favor insira o disco de arranque %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Palavra-passe" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Introduza a sua palavra-passe: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Erro de DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Este é um DVD de dupla face. Iniciou a partir da segunda face.\n" +"\n" +"Vire o DVD para a primeira face e depois continue." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Desligar" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Pausar agora o sistema?" + +#. txt_password +msgid "Password\n" +msgstr "Senha\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Outras Opções" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Localização" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Mapa de teclas" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Modos" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Modo Avançado" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Acessibilidade" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Nenhum" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Contraste Elevado" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Ampliador" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Leitor de Ecrã" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminal de Braile" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modificadores de Teclado" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Teclado No Ecrã" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Dificuldades Motoras - dispositivos comutadores" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Tudo" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Utilizar o disco de atualização dos controladores" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instalar uma estação de trabalho" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instalar um servidor" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Instalação OEM (para fabricantes)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instalar um servidor LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instalar um servidor LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instalar um sistema de linha de comandos" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Instalar um sistema mínimo" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instalar uma máquina virtual mínima" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Verificar se o disco tem defeitos" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Reuperar um sistema com problemas" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Testar a ^memória (RAM)" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Arrancar a partir do ^primeiro disco rígido" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Só programa livre" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "Reinstalação Automática da ^Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Resolução" + +#. txt_videodrv +msgid "Video" +msgstr "Vídeo" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Áudio" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..9dd9f60 --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,314 @@ +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# +msgid "" +msgstr "" +"Project-Id-Version: bootloader\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:39+0000\n" +"Last-Translator: Neliton Pereira Jr. \n" +"Language-Team: Novell Language \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Cancelar" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Reiniciar" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Continuar" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opções de inicialização" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Saindo..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Você está saindo do menu de inicialização gráfica\n" +"e iniciando a interface em modo de texto." + +#. txt_help +msgid "Help" +msgstr "Ajuda" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Gerenciador de inicialização" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Erro de I/O" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Alterar disco de inicialização" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Insira o disco de inicialização %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Este é o disco de inicialização %u.\n" +"Insira o disco de inicialização %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Este não é um disco de inicialização adequado.\n" +"Por favor insira o disco de inicialização %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Senha" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Digite a sua senha: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Erro no DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Este é um DVD de duas faces. Você está iniciando a partir do segundo lado.\n" +"Vire o DVD e continue." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Desligar" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Desligar o sistema agora?" + +#. txt_password +msgid "Password\n" +msgstr "Senha\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Outras opções" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Localização" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Mapa de caracteres" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Modos" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Modo especialista" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Acessibilidade" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Nenhum" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Alto contraste" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Ampliação" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Leitor de tela" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminal em Braille" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modificadores de teclado" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Teclado virtual" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Dificuldades motoras - alternar dispositivos" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Tudo" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Usar o disco de atualização de driver" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instalar uma estação de trabalho" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instalar um servidor" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Instalação OEM (para fabricantes)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instalar um servidor LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instalar um servidor LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instalar um sistema de linha de comando" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Instalar um sistema mínimo" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instalar uma máquina virtual mínima." + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Verificar se há defeitos no disco" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Recuperar um sistema corrompido" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Testar ^memória" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Inicializar pelo ^primeiro disco rígido" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Somente software livre" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Reinstalação automática Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Resolução" + +#. txt_videodrv +msgid "Video" +msgstr "Vídeo" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Áudio" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..c2f6b62 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,317 @@ +# translation of ro.po to Romanian +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Claudiu Costin , 2004. +# Lucian Adrian Grijincu , 2010. +msgid "" +msgstr "" +"Project-Id-Version: ro\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2014-02-17 12:49+0000\n" +"Last-Translator: Marian Vasile \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Renunță" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Repornește" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Continuă" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opțiuni de pornire" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Ieșire..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Acum veți părăsi modul grafic de pornire\n" +"și veți intra în interfața text." + +#. txt_help +msgid "Help" +msgstr "Ajutor" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Încărcător de sistem" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Eroare de intrare/ieșire" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Schimbare disc de pornire" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Introduceți discul de pornire %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Acesta este discul de pornire %u.\n" +"Introduceți discul de pornire %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Acesta nu este un disc de pornire potrivit.\n" +"Introduceți discul de pornire %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Parola" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Introduceți parola: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Eroare DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Acesta este un DVD cu două fețe. Ați pornit sistemul de pe fața a doua.\n" +"\n" +"Întoarceți DVD-ul și apoi continuați." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Oprire" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Opresc sistemul acum?" + +#. txt_password +msgid "Password\n" +msgstr "Parola\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Alte opțiuni" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Localizare" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Tastatură" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Moduri" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Mod expert" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Accesibilitate" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Nimic" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Contrast puternic" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Lupă" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Cititor de ecran" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminal Braille" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modificatori tastatură" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Tastatură virtuală" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Deficiențe motoare - dispozitive tip butoane" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Tot" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Folosește discul de actualizare a driverelor" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instalează o stație de lucru" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instalează un server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Instalare pentru producătorii de calculatoare (OEM)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instalează un server LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instalează un server LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instalează un sistem fără mod grafic" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Instalează un sistem minimal" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instalează o mașină virtuală minimală" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "Verifi^că dacă discul are defecte" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Salvați un sistem ava^riat" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Testează ^memoria" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Pornește de pe primul hard disc" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Doar software liber" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "Reinstalare automată ^Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Rezoluție" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Audio" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..6a316b8 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,318 @@ +# translation of bootloader.po to Russian +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Copyright (C) 2004 Vdel CREC +# Andrew Bogatov, 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: bootloader\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2013-12-15 11:39+0000\n" +"Last-Translator: Igor Zubarev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Отмена" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Перезагрузка" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Продолжить" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Параметры загрузки" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Выход..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Вы покидаете графическое меню загрузки.\n" +"Будет запущен текстовый интерфейс." + +#. txt_help +msgid "Help" +msgstr "Справка" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Загрузчик" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Ошибка ввода/вывода" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Смените загрузочный диск" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Вставьте загрузочный диск %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Это загрузочный диск %u.\n" +"Вставьте загрузочный диск %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Это неподходящий загрузочный диск.\n" +"Пожалуйста, вставьте загрузочный диск %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Пароль" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Введите ваш пароль: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Ошибка DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Это двусторонний DVD-диск. Вы загрузились со второй стороны.\n" +"\n" +"Переверните DVD и продолжайте." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Выключить питание" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Выключить систему?" + +#. txt_password +msgid "Password\n" +msgstr "Пароль\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Параметры" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Локализация" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Клавиатура" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Режимы" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Обычный" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Режим эксперта" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Специальные возможности" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Нет" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Высокая контрастность" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Экранная лупа" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Экранный диктор" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Терминал Брайля" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Модификаторы клавиатуры" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Экранная клавиатура" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Переключающие устройства при нарушениях моторики" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Всё" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Использовать диск с обновлениями драйверов" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Установить рабочую станцию" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Установить сервер" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-режим установки (для производителей)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Установить сервер LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Установить сервер LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Установить систему без графического интерфейса" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Установить систему в минимальной комплектации" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Установить минимальную виртуальную машину" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Проверить диск на наличие ошибок" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Восстановить систему" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Проверить ^память" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Загрузиться с первого жёсткого диска" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Только свободное ПО" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Автоматическая переустановка Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Разрешение" + +#. txt_videodrv +msgid "Video" +msgstr "Видео" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "Авто" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Аудио" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 0000000..272c23c --- /dev/null +++ b/po/sk.po @@ -0,0 +1,319 @@ +# translation of bootloader.po to +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# , 2004. +# , 2004. +# Andrej Kacian , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: bootloader\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-04-23 15:53+0000\n" +"Last-Translator: Erich Stark \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Ok" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Zrušiť" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Reštartovať" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Pokračovať" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Štartovacie parametre" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Ukončuje sa..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Opúšťate grafickú ponuku štartu a spúšťate\n" +"textové používateľské rozhranie." + +#. txt_help +msgid "Help" +msgstr "Pomocník" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Zavádzač systému" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "V/V chyba" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Zmena štartovacieho disku" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Vložte štartovací disk %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Toto je štartovací disk %u.\n" +"Vložte štartovací disk %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Toto nie je vhodný štartovací disk. \n" +"Vložte, prosím, štartovací disk %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Heslo" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Zadajte vaše heslo: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Chyba DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Toto je obojstranné DVD médium. Spúšťate systém z druhej strany.\n" +"\n" +"Prosím otočte médium a potom pokračujte." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Vypnúť" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Naozaj chcete vypnúť počítač?" + +#. txt_password +msgid "Password\n" +msgstr "Heslo\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Ďalšie voľby" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Lokalizácia" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Klávesnica" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Režimy" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normálny" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Rozšírený spôsob inštalácie" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Prístupnosť" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Žiadne" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Vysoký kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Lupa" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Čítačka obrazovky" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminál v Braillovom písme" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Zmeny klávesnice" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Klávesnica na obrazovke" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Pohybové ťažkosti - prepnúť zariadenia" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Všetko" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Použiť disk pre aktualizáciu ovládačov" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Inštalácia pracovnej stanice" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Inštalovať server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM inštalácia (pre výrobcov)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Inštalácia LAMP servera" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Inštalácia LTSP servera" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Inštalovať systém iba s príkazovým riadkom" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Inštalácia minimálneho systému" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Inštalovať minimálny virtuálny stroj" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Skontrolovať chyby na disku" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Zachrániť poškodený systém" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "^Test pamäte" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "Štart systému z prvého ^disku" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Iba slobodný softvér" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Automatické preinštalovanie Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Rozlíšenie" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Zvuk" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 0000000..3fd2435 --- /dev/null +++ b/po/sl.po @@ -0,0 +1,320 @@ +# translation of sl.po to Slovenščina +# translation of bootloader.sl_SI.po to Slovenscina +# translation of sl_SI.po to Slovenscina +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# Janez Krek , 2004, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: sl\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:41+0000\n" +"Last-Translator: Launchpad Translations Administrators \n" +"Language-Team: Slovenščina \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" +"n%100==4 ? 2: 3);\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "V redu" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Prekliči" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Ponovno zaženi" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Nadaljuj" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Možnosti zagona" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Program bo končan ..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Zapustili boste grafični zagonski meni in\n" +"nadaljevali v besedilnem načinu." + +#. txt_help +msgid "Help" +msgstr "Pomoč" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Zagonski nalagalnik" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Napaka I/O" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Zamenjava zagonskega diska" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Vstavite zagonski disk %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Vstavljen je zagonski disk %u.\n" +"Vstaviti je treba disk %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Vstavljeni zagonski disk ni ustrezen.\n" +"Vstaviti je treba disk %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Geslo" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Vpišite geslo: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Napaka na nosilcu DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Dvostranski zagonski nosilec DVD je vstavljen na napačno stran.\n" +"\n" +"Obrnite DVD in nadaljujte." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Izklopi" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Ali želite takoj zaustaviti sistem?" + +#. txt_password +msgid "Password\n" +msgstr "Geslo\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Druge možnosti" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Jezikovna oznaka" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Tipkovnica" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Načini" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Običajno" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Podrobni način" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Dostopnost" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Brez" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Visok kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Povečevalo" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Zaslonski bralnik" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Brajeva vrstica" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Spremenilne tipke" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Zaslonska tipkovnica" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Težave z motoriko - zamenjajte napravo" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Vse" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Uporabi disk s posodobitvami gonilnikov" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Namesti delovno postajo" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Namesti strežnik" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Namesti kot OEM (za proizvajalce)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Namesti strežnik LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Namesti strežnik LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Namesti sistem ukazne vrstice" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Namesti najmanjši sistem" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Namesti najmanjši navidezni sistem" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Preveri, ali je disk poškodovan" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "Pop^ravi pokvarjen sistem" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Preizkusi delovni po^mnilnik" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Zaženi s prvega trdega diska" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Samo s prosto programsko opremo" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "Samodejna ponovna namestitiev Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Ločljivost" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Zvok" diff --git a/po/sq.po b/po/sq.po new file mode 100644 index 0000000..04456e7 --- /dev/null +++ b/po/sq.po @@ -0,0 +1,317 @@ +# Albanian translation for gfxboot-theme-ubuntu +# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 +# This file is distributed under the same license as the gfxboot-theme-ubuntu package. +# FIRST AUTHOR , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: gfxboot-theme-ubuntu\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2006-03-18 12:14:59.394968+00:00\n" +"PO-Revision-Date: 2014-02-03 14:06+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:20+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Anullo" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Rindize" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Vazhdo" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Opsionet e Nisjes (boot)" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Duke Dalë..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Ju po dilni nga Menuja Grafike e Nisjes \"boot\" dhe\n" +"po nisni versionin e ndërfaqes me tekst." + +#. txt_help +msgid "Help" +msgstr "Ndihmë" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Ngarkuesi i nisjes (boot)" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Gabim I/O" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Ndërro Diskun e Nisjes" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Fut diskun e nisjes %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Ky është disku i nisjes %u.\n" +"Fut diskun e nisjes %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Ky nuk është një disk i përshtatshëm i nisjes.\n" +"Ju lutemi të vendosni diskun e nisjes %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Fjalëkalimi" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Vendosni fjalëkalimin tuaj: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Gabim i DVD-së" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Kjo është një DVD me dy-anë. Ju e keni nisur nga ana e dytë.\n" +"\n" +"Ktheje DVD-në në krahun tjetër dhe vazhdo." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Fike" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Ta ndaloj sistemin tani?" + +#. txt_password +msgid "Password\n" +msgstr "Fjalëkalimi\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Opsione të Tjera" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Vendndodhje" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Klasifikimi i tastierës" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Mënyrat" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normale" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Mënyra e ekspertit" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Përdorshmëria" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Asnjë" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Kontrast i Lartë" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Zmadhuesi" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Lexues Ekrani" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Terminali i Braille (alfabet për të verbërit)" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Modifikues të Tastierës" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Tastierë në Ekran" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Probleme Motorike - ndërro pajisjet" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Gjithçka" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Përdor diskun për përditësimin e draiverave" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Instalo një stacion pune" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Instalo një server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "Instalim OEM (për prodhuesit)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Instalo një server LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Instalo një server LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Instalo një sistem me bazë komande" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Instalo një sistem minimal" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Instalo një makinë virtuale minimale" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Kontrollo diskun për defekte" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Shpëto një sistem të dëmtuar" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Testo ^kujtesën" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Nis nga hard disku i parë." + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Vetëm programe falas" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Riinstalim Automatik i Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "" + +#. txt_videodrv +msgid "Video" +msgstr "" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Audio" diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 0000000..e99b3a2 --- /dev/null +++ b/po/sr.po @@ -0,0 +1,317 @@ +# Serbian translations for boot loader +# Copyright (C) 2005 SUSE Linux GmbH +# Copyright © 2005 Danilo Segan +# Мирослав Николић , 2011. +msgid "" +msgstr "" +"Project-Id-Version: bootloader\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-03-27 22:16+0000\n" +"PO-Revision-Date: 2013-12-15 11:42+0000\n" +"Last-Translator: Launchpad Translations Administrators \n" +"Language-Team: Ubuntu Serbian Translators\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" +"X-Project-Style: default\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "У реду" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Откажи" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Поново покрени" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Настави" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Опције за покретање" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Завршавам..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Напуштате графички изборник покретања и\n" +"покрећете сучеље у режиму текста." + +#. txt_help +msgid "Help" +msgstr "Помоћ" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Покретач система" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "У/И грешка" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Промените диск за покретање" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Уметните диск за покретање „%u“." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Ово је диск за покретање „%u“.\n" +"Уметните диск за покретање „%u“." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Ово није прикладан диск за покретање.\n" +"Уметните диск за покретање „%u“." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Лозинка" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Унесите вашу лозинку: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Грешка на ДВД-у" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Ово је двострани ДВД. Покренули сте са друге стране.\n" +"\n" +"Окрените ДВД и затим наставите." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Угаси" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Да сада угасим систем?" + +#. txt_password +msgid "Password\n" +msgstr "Лозинка\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Остале опције" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Локалитет" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Мапа тастера" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Режими" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Уобичајен" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Напредни режим" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Приступачност" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Ништа" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Велики контраст" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Лупа" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Читач екрана" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Брајев терминал" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Измењивачи тастатуре" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Тастатура на екрану" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Проблеми са мотором — промените уређај" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Све" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Користите диск са освежењима управљачких програма" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Инсталирај радну станицу" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Инсталирај сервер" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "ОЕМ инсталација (за произвођаче)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Инсталирај ЛАМП сервер" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Инсталирај ЛТСП сервер" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Инсталирај конзолни систем" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Инсталирај минимални систем" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Инсталирај минималну виртуелну машину" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Провери диск за оштећења" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Спаси оштећени систем" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Тестирај ^меморију" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Покрени са првог чврстог диска" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Само слободан софтвер" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Делово аутоматско реинсталирање" + +#. txt_resolution +msgid "Resolution" +msgstr "Резолуција" + +#. txt_videodrv +msgid "Video" +msgstr "Видео" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Звук" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000..bb40707 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,317 @@ +# Copyright © 2004 SUSE LINUX AG +# +msgid "" +msgstr "" +"Project-Id-Version: bootloader\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2014-10-28 15:55+0000\n" +"Last-Translator: Josef Andersson \n" +"Language-Team: Svenska \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" +"X-Poedit-Country: SWEDEN\n" +"X-Poedit-Language: Swedish\n" +"X-Poedit-SourceCharset: utf-8\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "OK" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Avbryt" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Starta om" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Fortsätt" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Startalternativ" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Avslutar…" + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Du är på väg att lämna den grafiska startmenyn och\n" +"starta textlägesgränssnittet." + +#. txt_help +msgid "Help" +msgstr "Hjälp" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Startprogram" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "In/ut-fel" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Byt startdisk" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Mata in startdisken %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Det här är startdisken %u.\n" +"Mata in startdisken %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Det här är inte en passande startdisk.\n" +"Mata in startdisken %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Lösenord" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Ange ditt lösenord: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "DVD-fel" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Det här är en dubbelsidig dvd. Du har startat från den andra sidan.\n" +"\n" +"Vänd på dvd-skivan och fortsätt sedan." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Stäng av" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Vill du stänga av systemet nu?" + +#. txt_password +msgid "Password\n" +msgstr "Lösenord\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Övrigt" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Plats" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Tangentbordslayout" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Lägen" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Normal" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Expertläge" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Hjälpmedel" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Inget" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Hög kontrast" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Förstorare" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Skärmläsare" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Punktskriftsterminal" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Tangentbordsmodifierare" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Skärmtangentbord" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Motorikproblem - brytare" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Allting" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Använd skiva för drivrutinsuppdatering" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Installera en arbetsstation" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Installera en server" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM-installation (för tillverkare)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Installera en LAMP-server" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Installera en LTSP-server" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Installera ett kommandoradssystem" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Installera ett minimalt system" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Installera en minimal virtuell maskin" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Kontrollera skivan efter fel" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Rädda ett trasigt system" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Kontrollera ^minne" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Starta upp från första hårddisken" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Endast fri programvara" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "Automatisk ominstallation för ^Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Upplösning" + +#. txt_videodrv +msgid "Video" +msgstr "Video" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Ljud" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 0000000..7a1cc14 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,318 @@ +# translation of uk(6).po to Ukrainian +# LANGUAGE translations for boot loader +# Copyright (C) 2004 SUSE LINUX AG +# +# Ivan Petrouchtchak , 2005. +# Vadim Abramchuck , 2006. +msgid "" +msgstr "" +"Project-Id-Version: uk(6)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-10-09 09:00+0000\n" +"PO-Revision-Date: 2013-12-15 11:42+0000\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-12-16 17:21+0000\n" +"X-Generator: Launchpad (build 17286)\n" + +#. ok button label +#. txt_ok +msgid "OK" +msgstr "Гаразд" + +#. cancel button label +#. txt_cancel +msgid "Cancel" +msgstr "Скасувати" + +#. reboot button label +#. txt_reboot +msgid "Reboot" +msgstr "Перезавантажити" + +#. continue button label +#. txt_continue +msgid "Continue" +msgstr "Продовжити" + +#. txt_bootoptions +msgid "Boot Options" +msgstr "Параметри завантаження" + +#. window title for exit dialog +#. txt_exit_title (see txt_exit_dialog) +msgid "Exiting..." +msgstr "Вихід..." + +#. txt_exit_dialog +msgid "" +"You are leaving the graphical boot menu and\n" +"starting the text mode interface." +msgstr "" +"Ви виходите з графічного меню завантаження\n" +"та переходите у текстовий режим інтерфейсу." + +#. txt_help +msgid "Help" +msgstr "Довідка" + +#. info box title +#. txt_info_title +msgid "Boot loader" +msgstr "Завантажувач" + +#. error box title +#. txt_error_title +msgid "I/O error" +msgstr "Помилка вводу/виводу" + +#. boot disk change dialog title +#. txt_change_disk_title +msgid "Change Boot Disk" +msgstr "Змінити завантажувальний диск" + +#. txt_insert_disk +#, c-format +msgid "Insert boot disk %u." +msgstr "Вставте завантажувальний диск %u." + +#. txt_insert_disk2 +#, c-format +msgid "" +"This is boot disk %u.\n" +"Insert boot disk %u." +msgstr "" +"Це завантажувальний диск %u.\n" +"Вставте завантажувальний диск %u." + +#. txt_insert_disk3 +#, c-format +msgid "" +"This is not a suitable boot disk.\n" +"Please insert boot disk %u." +msgstr "" +"Цей завантажувальний диск не підходить.\n" +"Будь ласка, вставте завантажувальний диск %u." + +#. password dialog title +#. txt_password_title +msgid "Password" +msgstr "Пароль" + +#. Keep the newlines and spaces after ':'! +#. txt_password +msgid "" +"Enter your password: \n" +"\n" +"\n" +msgstr "" +"Введіть ваш пароль: \n" +"\n" +"\n" + +#. dvd warning title +#. txt_dvd_warning_title +msgid "DVD Error" +msgstr "Помилка DVD" + +#. txt_dvd_warning2 +msgid "" +"This is a two-sided DVD. You have booted from the second side.\n" +"\n" +"Turn the DVD over then continue." +msgstr "" +"Цей DVD двобічний. Ви завантажились з іншого боку.\n" +"\n" +"Переверніть DVD і продовжуйте." + +#. power off dialog title +#. txt_power_off_title +msgid "Power Off" +msgstr "Вимкнути" + +#. txt_power_off +msgid "Halt the system now?" +msgstr "Вимкнути систему зараз?" + +#. txt_password +msgid "Password\n" +msgstr "Пароль\n" + +#. button label for other/more options +#. txt_other_options +msgid "Other Options" +msgstr "Інші параметри" + +#. label for language selection +#. txt_language +msgid "Locale" +msgstr "Локаль" + +#. label for keymap selection +#. txt_keymap +msgid "Keymap" +msgstr "Розкладка" + +#. label for installation mode selection +#. txt_modes +msgid "Modes" +msgstr "Режими" + +#. label for modes menu +#. txt_mode_normal +msgid "Normal" +msgstr "Cтандартний" + +#. label for d-i mode menu +#. txt_expert_mode +msgid "Expert mode" +msgstr "Режим фахівця" + +#. title for accessibility menu +#. txt_access +msgid "Accessibility" +msgstr "Доступність" + +#. label for accessibility menu +#. txt_access_none +msgid "None" +msgstr "Жодний" + +#. label for accessibility menu +#. txt_access_v1 +msgid "High Contrast" +msgstr "Висока контрастність" + +#. label for accessibility menu +#. txt_access_v2 +msgid "Magnifier" +msgstr "Збільшувач" + +#. label for accessibility menu +#. txt_access_v3 +msgid "Screen Reader" +msgstr "Зчитувач екрана" + +#. label for accessibility menu +#. txt_access_brltty +msgid "Braille Terminal" +msgstr "Термінал Брайля" + +#. label for accessibility menu +#. txt_access_m1 +msgid "Keyboard Modifiers" +msgstr "Модифікатори клавіатури" + +#. label for accessibility menu +#. txt_access_m2 +msgid "On-Screen Keyboard" +msgstr "Екранна клавіатура" + +#. label for accessibility menu +#. txt_access_m3 +msgid "Motor Difficulties - switch devices" +msgstr "Ускладнення моторики - перемикніть пристрої" + +#. label for accessibility menu +#. txt_access_all +msgid "Everything" +msgstr "Усе" + +#. Installation mode. +#. txt_menuitem_driverupdates +msgid "Use driver update disc" +msgstr "Використати диск з оновленнями драйверів" + +#. Installation mode. +#. txt_menuitem_workstation +msgid "Install a workstation" +msgstr "Встановити робочу станцію" + +#. Installation mode. +#. txt_menuitem_server +msgid "Install a server" +msgstr "Встановити сервер" + +#. Installation mode. +#. txt_menuitem_oem +msgid "OEM install (for manufacturers)" +msgstr "OEM встановлення (для виробників)" + +#. Installation mode. +#. txt_menuitem_lamp +msgid "Install a LAMP server" +msgstr "Встановити сервер LAMP" + +#. Installation mode. +#. txt_menuitem_ltsp +msgid "Install an LTSP server" +msgstr "Встановити сервер LTSP" + +#. Installation mode. +#. txt_menuitem_cli +msgid "Install a command-line system" +msgstr "Встановити консольний варіант системи" + +#. Installation mode. +#. txt_menuitem_minimal +msgid "Install a minimal system" +msgstr "Встановити мінімальну систему" + +#. Installation mode. +#. txt_menuitem_minimalvm +msgid "Install a minimal virtual machine" +msgstr "Встановити мінімальну віртуальну машину" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_check +msgid "^Check disc for defects" +msgstr "^Перевірити диск на дефекти" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_rescue +msgid "^Rescue a broken system" +msgstr "^Відновити пошкоджену систему" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_memtest +msgid "Test ^memory" +msgstr "Перевірити ^пам'ять" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_hd +msgid "^Boot from first hard disk" +msgstr "^Завантажитись з першого жорсткого диску" + +#. Boot option. +#. txt_option_free +msgid "Free software only" +msgstr "Лише вільне програмне забезпечення" + +#. Boot menu item; a ^ prefix indicates a unique accelerator key. +#. txt_menuitem_dell_factory_recovery +msgid "^Dell Automatic Reinstall" +msgstr "^Автоматичне перевстановлення Dell" + +#. txt_resolution +msgid "Resolution" +msgstr "Роздільна здатність" + +#. txt_videodrv +msgid "Video" +msgstr "Відео" + +#. txt_video_driver_auto +msgid "Auto" +msgstr "" + +#. txt_no_composite +msgid "No Composite" +msgstr "" + +#. txt_audio +msgid "Audio" +msgstr "Аудіо" diff --git a/scrape-console-setup b/scrape-console-setup new file mode 100755 index 0000000..c57bc9b --- /dev/null +++ b/scrape-console-setup @@ -0,0 +1,402 @@ +#! /usr/bin/perl -w +use strict; + +use File::Find; + +do "/usr/share/console-setup/KeyboardNames.pl" + or die "can't load /usr/share/console-setup/KeyboardNames.pl"; + +# Horrible hardcoded mess for now; please keep this in the same order as in +# console-setup/debian/keyboard-configuration.config. The values are +# substrings since that seems to be simplest to handle in gfxboot-ese. +my %keymap_locales = ( + 'al' => '_AL', + 'az' => '_AZ', + 'bd' => '_BD', + 'be' => '_BE', + 'bg' => '_BG', + 'br' => '_BR', + 'by' => '_BY', + 'ca' => '_CA', + 'ch_fr' => 'fr_CH', + 'ch' => '_CH', + 'cz' => '_CZ', + 'dk' => '_DK', + 'ee' => '_EE', + 'es_ast' => 'ast_ES', + 'es_cat' => 'ca_ES', + 'es' => '_ES', + 'fi_smi' => 'se_FI', + 'fi' => '_FI', + 'gb' => '_GB', + 'hu' => '_HU', + 'ie' => '_IE', + 'il' => '_IL', + 'ir' => '_IR', + 'is' => '_IS', + 'it' => '_IT', + 'jp' => '_JP', + 'lt' => '_LT', + 'lv' => '_LV', + 'ma' => '_MA', + 'mk' => '_MK', + 'mn' => '_MN', + 'mt' => '_MT', + 'no_smi' => 'se_NO', + 'no' => '_NO', + 'pl' => '_PL', + 'pt' => '_PT', + 'ro' => '_RO', + 'ru' => '_RU', + 'se_smi' => 'se_SE', + 'sk' => '_SK', + 'si' => '_SI', + 'tj' => '_TJ', + 'th' => '_TH', + 'tr_ku' => 'ku_TR', + 'tr' => '_TR', + 'ua' => '_UA', + 'us' => ['en_US', '_VN'], + 'us_intl' => '_NL', + 'latam' => ['_AR', '_BO', '_CL', '_CO', '_CR', '_DO', '_EC', '_GT', '_HN', '_MX', '_NI', '_PA', '_PE', 'es_PR', '_PY', '_SV', 'es_US', '_UY', '_VE'], + 'ara' => 'ar_', + 'ba' => 'bs_', + 'de' => 'de_', + 'gr' => 'el_', + 'epo' => 'eo', # lack of trailing underscore is deliberate + 'fr_oss' => 'fr_', + 'in_guj' => 'gu_', + 'in' => 'hi_', + 'hr' => 'hr_', + 'am' => 'hy_', + 'ge' => 'ka_', + 'in_kan' => 'kn_', + 'la' => 'lo_', + 'in_mal' => 'ml_', + 'in_guru' => 'pa_', + 'me' => 'sr_ME', + 'rs' => 'sr_', + 'se' => 'sv_', + 'in_tam' => 'ta_', + 'in_tel' => 'te_', + 'cn' => 'zh_CN', +); + +# Non-top-level layouts to put on the menu. +my @show_variants = ( + 'ch_fr', + 'es_ast', + 'es_cat', + 'fr_oss', + 'tr_f', + 'us_dvorak', +); + +# Exclude these keymaps. +my @exclude_keymaps = ( + 'ad', # name collision with es_cat + 'brai', + 'braille', + 'fr', + 'nec/jp', + 'nec_vndr/jp', +); + +# Manual descriptions to make the list a bit narrower, thereby avoiding +# overflowing the screen. +my %description_overrides = ( + 'at' => 'Austria', + 'ba' => 'Bosnia', + 'br' => 'Brazil', + 'ca' => 'Canada', + 'cd' => 'Congo', + 'ch_fr' => 'Swiss French', + 'ch' => 'Swiss German', + 'cm' => 'Cameroon', + 'es_ast' => 'Asturian', + 'es_cat' => 'Catalan', + 'fi_smi' => 'Saami (Fin.)', + 'fo' => 'Faroes', + 'fr_oss' => 'French', + 'gb' => 'UK', + 'gh' => 'Ghana', + 'gn' => 'Guinea', + 'in_guj' => 'Gujarati', + 'in_guru' => 'Gurmukhi', + 'in_kan' => 'Kannada', + 'in_mal' => 'Malayalam', + 'in_tam' => 'Tamil', + 'in_tel' => 'Telugu', + 'ke' => 'Kenya', + 'kh' => 'Khmer', + 'kr' => 'Korean', + 'latam' => 'Latin Amer.', + 'lk' => 'Sinhala', + 'ma' => 'Morocco', + 'ng' => 'Nigeria', + 'no_smi' => 'Saami (Nor.)', + 'pk' => 'Pakistan', + 'rs' => 'Serbian', + 'se_smi' => 'Saami (Swe.)', + 'sy' => 'Syria', + 'tr_f' => 'Turkish (F)', + 'tr_ku' => 'Kurdish', + 'tz' => 'Tanzania', + 'us' => 'USA', + 'us_dvorak' => 'Dvorak', + 'us_intl' => 'USA Intl.', + 'vn' => 'Vietnam', + 'za' => 'South Africa', +); + +# These keymaps are non-Latin, which isn't very useful in gfxboot, so map +# them to US instead. +my @non_latin = ( + 'am', + 'ara', + 'ben', + 'bd', + 'bg', + 'bt', + 'by', + 'deva', + 'ge', + 'gh', + 'gr', + 'guj', + 'guru', + 'il', + 'in', + 'ir', + 'iku', + 'kan', + 'kh', + 'kz', + 'la', + 'lao', + 'lk', + 'lt', + 'mk', + 'mm', + 'mn', + 'mv', + 'mal', + 'ori', + 'pk', + 'ru', + 'scc', + 'sy', + 'syr', + 'tel', + 'th', + 'tj', + 'tam', + 'ua', + 'uz', +); + +# Some keymaps require unusual models for extra keys. +my %unusual_models = ( + 'br' => 'abnt2', + 'jp' => 'jp106', +); + +binmode STDOUT, ':utf8'; + +print < 'keyIns', + 0x01 => 'keyEnd', + 0x02 => 'keyDown', + 0x03 => 'keyPgDown', + 0x04 => 'keyLeft', + 0x06 => 'keyRight', + 0x07 => 'keyHome', + 0x08 => 'keyUp', + 0x09 => 'keyPgUp', + 0x10 => 'keyDel', +); + +my %spec_map = ( + 0x01 => 'keyEnter', +); + +sub map_keycode ($) { + my $type = ($_[0] >> 8) & 0xff; + my $code = $_[0] & 0xff; + if ($type == 0x00 or $type == 0x0b or $type == 0xf0 or $type == 0xfb) { + # KT_LATIN or KT_LETTER + if ($code == 0x08 or $code == 0x7f) { + # Backspace vs. Delete is a tricky case. gfxboot understands + # both (0x08 for delete-left, keyDel for delete-right), so we + # should map 0x7f to KeyDel. Unfortunately many keymaps only + # appear to define Delete, and the situation in console-data + # seems to be quite confused. Accordingly, we just ignore both + # and let gfxboot work it out for itself, which seems to work + # better. + return '0x00'; + } else { + return sprintf '0x%02x', $code; + } + } elsif ($type == 0xf2) { + # KT_SPEC + return $spec_map{$code} if exists $spec_map{$code}; + } elsif ($type == 0xf3) { + # KT_PAD + return $pad_map{$code} if exists $pad_map{$code}; + } + return '0x00'; +} + +# Flip KeyboardNames structures into more useful formats. +my %layouts; +my %variants; +for my $layout (keys %KeyboardNames::layouts) { + my $name = $KeyboardNames::layouts{$layout}; + $layouts{$name} = $layout; + for my $variant (keys %{$KeyboardNames::variants{$name}}) { + my $variantname = $KeyboardNames::variants{$name}{$variant}; + $variants{$name}{$variantname} = $variant; + } +} + +my %keymaps = map { $_ => 1 } + (keys %layouts, keys %keymap_locales, @show_variants); +delete $keymaps{$_} for @exclude_keymaps; +my @keymaps = sort keys %keymaps; + +my %keycodes; +for my $keymap (@keymaps) { + my ($layout, $variant, $model); + if ($keymap =~ /(.+)_(.+)/) { + $layout = $1; + $variant = $2; + } else { + $layout = $keymap; + undef $variant; + } + if (exists $unusual_models{$layout}) { + $model = $unusual_models{$layout}; + } else { + $model = 'pc105'; + } + my $ckbcomp = "ckbcomp -model $model -layout \Q$layout\E"; + $ckbcomp .= " -variant \Q$variant\E" if defined $variant; + my $table = `$ckbcomp | sudo loadkeys -mu 2>/dev/null`; + for my $map (qw(plain shift altgr)) { + if ($table =~ /${map}_map\[[^]]*\] = {\s*(.*?)(?:\s|,)*}/s) { + $keycodes{$keymap}{$map} = + [map { map_keycode(hex) } split(/,\s+/, $1)]; + } else { + $keycodes{$keymap}{$map} = [('0x00') x 128]; + } + } +} + +for my $keymap (@non_latin) { + $keycodes{$keymap} = $keycodes{us}; +} + +my %keymapfunc; + +for my $keymap (@keymaps) { + my $found = 0; + for my $index (0 .. 127) { + # Never map keys that are special when unshifted; this caused + # problems for the French keymap, and made it difficult in general + # to get out of a keymap you selected by accident. + if ($keycodes{us}{plain}[$index] =~ /^key/) { + next; + } + my $plain = $keycodes{$keymap}{plain}[$index]; + my $shift = $keycodes{$keymap}{shift}[$index]; + my $altgr = $keycodes{$keymap}{altgr}[$index]; + if ($plain eq $keycodes{us}{plain}[$index] and + $shift eq $keycodes{us}{shift}[$index] and + $altgr eq $keycodes{us}{altgr}[$index]) { + # The PC105 less than / greater than key isn't necessarily + # mapped correctly by the BIOS. + if ($index != 86) { + next; + } + } + if (($plain ne '0x00') or ($shift ne '0x00') or ($altgr ne '0x00')) { + print "/keymap.$keymap [\n" unless $found; + $found = 1; + my $hexindex = sprintf '0x%02x', $index; + print " [ $hexindex $plain $shift $altgr ]\n"; + } + } + if ($found) { + $keymapfunc{$keymap} = "keymap.$keymap"; + } else { + $keymapfunc{$keymap} = '.undef'; + } + print "] def\n\n" if $found; +} + +my %descriptions; +for my $keymap (@keymaps) { + my $desc; + if (exists $description_overrides{$keymap}) { + $desc = $description_overrides{$keymap}; + } elsif ($keymap =~ /(.+)_(.+)/) { + warn "Description for $keymap not found!\n" + unless exists $layouts{$1} and exists $variants{$1}{$2}; + $desc = "$layouts{$1} ($variants{$1}{$2})"; + } else { + warn "Description for $keymap not found!\n" + unless exists $layouts{$keymap}; + $desc = $layouts{$keymap}; + } + $descriptions{$keymap} = $desc; +} + +print "/keymaps [\n"; +my $i = 0; +my $us_index; +for my $keymap (sort { $descriptions{$a} cmp $descriptions{$b} } @keymaps) { + my $localelist; + if (exists $keymap_locales{$keymap}) { + if (ref $keymap_locales{$keymap}) { + $localelist = join(' ', map(qq{"$_"}, @{$keymap_locales{$keymap}})); + } else { + $localelist = qq{"$keymap_locales{$keymap}"}; + } + $localelist = "[ $localelist ]"; + } else { + $localelist = '[ ]'; + } + my $model; + if (exists $unusual_models{$keymap}) { + $model = qq{"$unusual_models{$keymap}"}; + } else { + $model = '.undef'; + } + print qq{ [ "$keymap" $keymapfunc{$keymap} "$descriptions{$keymap}" $localelist $model ]\n}; + $us_index = $i if $keymap eq 'us'; + ++$i; +} +print "] def\n\n"; + +die "'us' keymap not found!\n" unless defined $us_index; + +print < 'nb', + 'nn_NO' => 'nn', + 'pt' => 'pt_PT', + 'se_NO' => 'se', +); + +# The real localised names for these languages use characters not present in +# our font, or not rendered correctly for some other reason. +my @langname_notranslate = ( + 'am', + 'ar', + 'bn', + 'bo', + 'dz', + 'gu', + 'hi', + 'km', + 'lo', + 'ml', + 'mr', + 'my', + 'ne', + 'pa', + 'ta', + 'th', + 'ug', +); +my %langname_notranslate = map { $_ => 1 } @langname_notranslate; + +# Adjust the sort order slightly. (The values are not real language codes; +# they're just there to make the sort unambiguous.) +my %sort_ids = ( + 'nb' => 'no_NB', + 'nn' => 'no_NN', +); + +my %langnames; +my %locales; +open LIST, '<:utf8', "$localechooser/languagelist" + or die "$0: can't open $localechooser/languagelist: $!"; +while () { + chomp; + next if /^#/ or not /\S/; + my @bits = split /;/; + my $lang = $bits[0]; + next if $lang eq 'C'; + $lang = $langcode_overrides{$lang} if exists $langcode_overrides{$lang}; + if (exists $langname_notranslate{$lang}) { + $langnames{$lang} = $bits[1]; + } elsif ($lang eq 'he') { + my $bidi_pid = open2(\*BIDI_OUT, \*BIDI_IN, 'fribidi', '--nopad', '--nobreak'); + binmode BIDI_IN, ':utf8'; + binmode BIDI_OUT, ':utf8'; + print BIDI_IN $bits[2]; + close BIDI_IN; + { local $/ = undef; $langnames{$lang} = ; } + $langnames{$lang} =~ s/(.)%/%$1/g; + waitpid $bidi_pid, 0; + } else { + $langnames{$lang} = $bits[2]; + } + ($locales{$lang} = "$bits[6]") =~ s/[.@].*//; + $sort_ids{$lang} = $lang unless exists $sort_ids{$lang}; +} +close LIST; + +binmode STDOUT, ':utf8'; + +print "/lang.defaultnames [\n"; +for my $lang (sort { $sort_ids{$a} cmp $sort_ids{$b} } keys %langnames) { + print qq{ [ "$lang" "$locales{$lang}" "$langnames{$lang}" ]\n}; +} +print "] def\n"; diff --git a/splash.inc b/splash.inc new file mode 100644 index 0000000..af5746d --- /dev/null +++ b/splash.inc @@ -0,0 +1,69 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Splash screen (hidden-timeout mode). +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Create new splash window. +% +% ( ) ==> ( window ) +% +/window.splash { + widget.size array + dup .type t_splash put + dup .font font.normal put + dup .ed.font font.normal put + dup .color.fg boot.text.normal put +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialize splash window. +% +% ( window ) ==> ( ) +% +/splash.init { + pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw splash window. +% +% ( window ) ==> ( ) +% +/splash.show { + window.push + + menu.init + % like 'menu.entry true MenuSelect', but without drawing on the screen + bootoptions.init + + access.file dup .undef ne { + setimage + screen.size exch access.width sub 2 div exch access.height sub + moveto 0 0 access.width access.height image + + background.file setimage + } { pop } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Handle keyboard input. +% +% ( key_in ) ==> ( key_out ) +% +/splash.input { + /timeout.hidden false def + /background.file background.file.orig def + 0 0 moveto background.file setimage 0 0 image.size image + window.done + window.main + dup window.init + window.show + lang.displayed not { panel.lang } if + pop 0 +} def diff --git a/system.inc b/system.inc new file mode 100644 index 0000000..216eb35 --- /dev/null +++ b/system.inc @@ -0,0 +1,808 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Some basic definitions. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% some key codes +/keyEsc 0x0000001b def +/keyEnter 0x0000000d def +/keyTab 0x00000009 def +/keyShiftTab 0x00800009 def +/keyF1 0x3b000000 def +/keyF2 0x3c000000 def +/keyF3 0x3d000000 def +/keyF4 0x3e000000 def +/keyF5 0x3f000000 def +/keyF6 0x40000000 def +/keyF7 0x41000000 def +/keyF8 0x42000000 def +/keyF9 0x43000000 def +/keyF10 0x44000000 def +/keyF11 0x85000000 def +/keyF12 0x86000000 def +/keyHome 0x47000000 def +/keyUp 0x48000000 def +/keyPgUp 0x49000000 def +/keyLeft 0x4b000000 def +/keyRight 0x4d000000 def +/keyEnd 0x4f000000 def +/keyDown 0x50000000 def +/keyPgDown 0x51000000 def +/keyIns 0x52000000 def +/keyDel 0x53000000 def +/keyShiftF1 0x54000000 def +/keyShiftF2 0x55000000 def +/keyShiftF3 0x56000000 def +/keyShiftF4 0x57000000 def +/keyShiftF5 0x58000000 def +/keyShiftF6 0x59000000 def +/keyShiftF7 0x5a000000 def +/keyShiftF8 0x5b000000 def +/keyShiftF9 0x5c000000 def +/keyShiftF10 0x5d000000 def +/keyShiftF11 0x87000000 def +/keyShiftF12 0x88000000 def +/keyCtrlF1 0x5e000000 def +/keyCtrlF2 0x5f000000 def +/keyCtrlF3 0x60000000 def +/keyCtrlF4 0x61000000 def +/keyCtrlF5 0x62000000 def +/keyCtrlF6 0x63000000 def +/keyCtrlF7 0x64000000 def +/keyCtrlF8 0x65000000 def +/keyCtrlF9 0x66000000 def +/keyCtrlF10 0x67000000 def +/keyAltF1 0x68000000 def +/keyAltF2 0x69000000 def +/keyAltF3 0x6a000000 def +/keyAltF4 0x6b000000 def +/keyAltF5 0x6c000000 def +/keyAltF6 0x6d000000 def +/keyAltF7 0x6e000000 def +/keyAltF8 0x6f000000 def +/keyAltF9 0x70000000 def +/keyAltF10 0x71000000 def +/keyCtrlLeft 0x73000000 def +/keyCtrlRight 0x74000000 def +/keyCtrlEnd 0x75000000 def +/keyCtrlDown 0x76000000 def +/keyCtrlHome 0x76000000 def +/keyCtrlUp 0x84000000 def +/keyStatus 0xff000000 def + +/statusAlt 0x0208 def +/statusAltL 0x0200 def +/statusAltR 0x0008 def +/statusCtrl 0x0104 def +/statusShift 0x0003 def + +% boot loader + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% bootloader - boot loader type +% +% group: system +% +% ( -- int1 ) +% +% int1: boot loader type (0: lilo, 1:syslinux/isolinux, 2: grub) +% +/bootloader sysconfig getbyte def + +/lilo bootloader 0 eq def +/syslinux bootloader 1 eq def +/grub bootloader 2 eq def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% bootdrive - drive the BIOS booted from +% +% group: system +% +% ( -- int1 ) +% +% int1: BIOS drive id +% +/bootdrive sysconfig 5 add getbyte def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% mediatype - type of media we booted from +% +% group: system +% +% ( -- int1 ) +% +% int1: media type (0 disk, 1 floppy, 2 cdrom) +% +/mediatype sysconfig 2 add getbyte def + +/m_disk 0 def +/m_floppy 1 def +/m_cdrom 2 def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% biosmem - BIOS reported memory size +% +% group: mem +% +% ( -- int1 ) +% +% int1: total memory size according to BIOS +% +/biosmem sysconfig 20 add getdword def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% sectorsize - sector size +% +% group: mem system +% +% ( -- int1 ) +% +% int1: sector size in bytes +% +/sectorsize + 1 + sysconfig 1 add getbyte + 20 min % max. 1 MB + dup 0 eq { pop 9 } if + shl +def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% getinfo - type of info box +% +% group: system +% +% ( int1 -- int2 ) +% +% int1: type of info box we have to show +% int2: some data +% +% Note: really weird, should be replaced by something more obvious. +% +/getinfo { + 2 shl + sysconfig 12 add exch add getdword +} def + + +% bool values +/true 0 0 eq def +/false 0 0 ne def + +% type values +/t_none 0 def +/t_int 1 def +/t_unsigned 2 def +/t_bool 3 def +/t_string 4 def +/t_code 5 def +/t_ret 6 def +/t_prim 7 def +/t_sec 8 def +/t_dict_idx 9 def +/t_array 10 def +/t_end 11 def +/t_ptr 12 def + +/.value { t_int settype } def +/.undef 0 t_none settype def +/.end 0 t_end settype def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Print string (for debugging). +% +% ( string ) ==> ( ) +% +/string.print { + dup + currentpoint currentpoint 5 -1 roll strsize image moveto + show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Print number (for debugging). +% +% ( number ) ==> ( ) +% +/number.print { + 32 string + exch over + "%08x" exch sprintf + dup string.print + free +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Print obj (for debugging). +% +% ( obj ) ==> ( ) +% +/obj.print { + 64 string + exch dup + .value exch gettype + "%x:%08x" 3 index sprintf + dup string.print + free +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Print (for debugging). +% +% ( obj ) ==> ( ) +% +/print { + dup gettype t_int eq { number.print return } if + dup gettype t_string eq { string.print return } if + obj.print +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Convert object to pointer. +% +% ( obj ) ==> ( ptr ) +% +/cvp { t_ptr settype } def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Convert object to string. +% +% ( obj ) ==> ( string ) +% +/cvs { t_string settype } def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Arguments like snprintf. +% +% ( obj_1 ... obj_n string_1 string_2 ) ==> ( ) +% +/sprintf { + dup cvp length exch snprintf +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Allocate new string. +% +% ( size ) ==> ( string ) +/string { + 1 add malloc cvs +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Increment variable. +% +% ( dict_ref ) ==> ( ) +% +/inc { + dup exec 1 add def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Decrement variable. +% +% ( dict_ref ) ==> ( ) +% +/dec { + dup exec 1 sub def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Copy src to dst. +% +% Watch overlapping src & dst! +% +% ( dst src ) ==> ( dst ) +% +/strcpy { + "%s" 2 index sprintf +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Duplicate string. +% +% ( string ) ==> ( string ) +% +/strdup { + dup length string exch strcpy +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Test for AltGr. +% +% ( ) ==> ( bool ) +% +/is_altGr { + keystat statusAltR and 0 ne keystat statusAltL and 0 eq and +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Keyboard mapping. +% +% ( key ) ==> ( key ) +% +/mapkey { + dup 24 shr 0xff and /key.code exch def + is_altGr { + % bios is too smart... + key.code 0x78 ge key.code 0x83 le and { /key.code key.code 0x76 sub def } if + } if + 0 1 config.keymap .km.map get length 1 sub { + config.keymap .km.map get exch get + dup 0 get key.code eq { + 1 + keystat statusShift and { pop 2 } if + is_altGr { pop 3 } if + get + exch pop + } { + pop + } ifelse + } for +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Set password mode font property. +% +% ( font ) ==> ( font ) +% +/pwmode { + dup gettype t_ptr eq { + .value 0x80000000 or t_ptr settype + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show string right aligned. +% +% ( string ) ==> ( ) +% +/showright { + dup strsize pop neg 0 rmoveto show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show string centered. +% +% ( string ) ==> ( ) +% +/showcenter { + dup strsize pop 2 div neg 0 rmoveto show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% ( date ) ==> ( weekday ) +% +/weekday { + dup 8 shr 0xff and 1 sub + dup 3 mul over 2 div sub + exch 2 mul 0x11000a exch shr 3 and add + over 0xff and 6 add add + exch 16 shr add + 7 mod +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% ( date ) ==> ( day ) +% +/day { + 0xff and +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% ( date ) ==> ( month ) +% +/month { + 8 shr 0xff and +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% ( date ) ==> ( year ) +% +/year { + 16 shr +} def + + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% readsector - read sector +% +% group: system +% +% ( int1 -- ptr1 ) +% +% int1: sector number +% ptr1: buffer with sector data or .undef. Use @free to free the buffer. +% +% Note: does not return on error. Returns .undef if function is not implemented. +% +/readsector { + _readsector + dup .undef eq { return } if + + sectorsize malloc dup rot over length memcpy +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% readgfxconfig - read gfxboot config file +% +% group: system +% +% ( -- ) +% +/readgfxconfig { + gfxconfig.data .undef eq { + "gfxboot.cfg" findfile dup .undef ne { + dup dup length dup string dup cvp 4 2 roll memcpy exch free + } { + pop "" + } ifelse + + /gfxconfig.data over '\n' split def free + + } if +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% getgfxconfig - get gfxboot config file entry +% +% group: system +% +% ( str1 -- str2 ) +% +% str1: key for config entry +% str2: config string (or .undef) +% +/getgfxconfig { + readgfxconfig + + currenteotchar '=' seteotchar + + .undef + + gfxconfig.data { + % overkill because string compare does not honour eotchar + dup strdup dup 5 index eq { + dup length exch free 1 add add exch pop exit + } { + free pop + } ifelse + } forall + + exch seteotchar exch pop + +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% listgfxconfig - list all gfxboot config file keys and values +% +% group: system +% +% ( -- array1 ) +% +% array1: array of [ key, value ] arrays in config file; caller must free keys +% +/listgfxconfig { + readgfxconfig + + currenteotchar '=' seteotchar + + [ + gfxconfig.data { + dup '' eq { + pop + } { + [ exch dup strdup exch dup length 1 add add ] + } ifelse + } forall + ] + + exch seteotchar +} def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% freegfxconfig - free a list returned by listgfxconfig +% +% group: system +% +% ( array1 -- ) +% +% array1: array of [ key, value ] arrays in config file +% +/freegfxconfig { + dup { 0 get free } forall + free +} def + +/gfxconfig.data .undef def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% split - split string +% +% group: +% +% ( str1 int1 -- array1 ) +% +% str1: string +% int1: char +% array1: array of strings +% +/split { + + % split does not work if str1 is in a special memory region (where + % 'cvp length' does not work). So we dup it first. + + exch strdup dup rot + + currenteotchar exch seteotchar exch + + [ exch + + { + dup strdup exch + dup length add + + dup cvp length 1 le { pop exit } if + + 1 add + + } loop + + ] + + exch seteotchar + + exch free + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Skip leading non-spaces. +% +% ( string ) ==> ( string ) +% +/skipnonspaces { + { dup 0 get dup 0 ne exch ' ' ne and { 1 add } { exit } ifelse } loop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Skip leading spaces. +% +% ( string ) ==> ( string ) +% +/skipspaces { + { dup 0 get ' ' eq { 1 add } { exit } ifelse } loop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Drop spaces at string end. +% Modifies string! +% +% ( string ) ==> ( ) +% +/dropspaces { + dup length + dup 0 eq { + pop pop + } { + 1 sub + -1 0 { + over over get ' ' eq { over exch 0 put } { pop exit } ifelse + } for + pop + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Test if string[ofs-1]/string[ofs] is a word boundary. +% +% ( string ofs ) ==> ( true|false ) +% +% boundary is either space/non-space or non-space/(space|'=') +% +/iswordboundary { + dup 0 eq { pop pop true return } if + + add dup 1 sub 0 get exch 0 get + + over ' ' eq over ' ' gt and { pop pop true return } if + over ' ' gt over dup ' ' eq exch dup '=' eq exch 0 eq or or and { pop pop true return } if + + pop pop false +} def + + +%% findmode - find video mode number +% +% group: gfx.screen +% +% ( int1 int2 int3 -- int4 ) +% +% int1, int2: width, height +% int3: color bits +% int4: mode number (or .undef) +% +% example +% 1024 768 16 findmode setmode % 1024x768, 16-bit color mode +% +/findmode { + 0 1 videomodes { + videomodeinfo dup .undef eq { + pop pop pop pop + } { + % compare width, height, colors + 6 index 4 index eq 6 index 4 index eq and 5 index 3 index eq and { + 7 1 roll 6 { pop } repeat 0xbfff and return + } { + pop pop pop pop + } ifelse + } ifelse + } for + + pop pop pop .undef +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Replace substring. Returns newly allocated string. +% +% ( str key value ) ==> ( new_str ) +% +% Replaces first occurence of 'key' in str with 'value'. +% +/strreplace { + 2 index 2 index strstr dup 0 ne { + 1 sub + over length 3 index length sub 4 index length add string + dup cvp 5 index cvp 3 index memcpy + dup 6 1 roll over add exch 5 -1 roll exch add + 4 -1 roll length add 3 1 roll "%s%s" exch sprintf + } { + pop pop pop strdup + } ifelse + + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Duplicate len bytes of string. +% +% ( string len -- string ) +% +/strndup { + /strndup.len exch def + /strndup.src exch cvp def + /strndup.dst strndup.len string cvp def + strndup.dst strndup.src strndup.len memcpy + strndup.dst strndup.len 0 put + strndup.dst cvs +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Force to lower case. Overwrites string. +% +% ( string -- string ) +% +/tolower { + dup length 0 eq { return } if + dup length 1 sub 0 1 rot { + over over get 32 or 2 index 3 1 roll put + } for +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Interpret a string as a number and return it, or .undef on failure. +% Only supports hexadecimal numbers (optionally preceded by "0x"). +% +% ( string -- number ) +% +/strtol { + tolower + dup 0 get '0' eq over 1 get 'x' eq and { 2 add } if + /strtol.tmp 0 def + { + dup '0' ge over '9' le and { + '0' sub strtol.tmp 16 mul add + /strtol.tmp exch def + } { + dup 'a' ge over 'f' le and { + 'a' sub 10 add strtol.tmp 16 mul add + /strtol.tmp exch def + } { + pop .undef return + } ifelse + } ifelse + } forall + strtol.tmp +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Skip whitespace. Advances string. +% +% ( string -- string ) +% +/skipspace { + { + dup 0 get + dup 0 eq exch ' ' gt or { exit } if + 1 add + } loop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Find the next word boundary (NUL or whitespace). +% +% ( string -- pos ) +% +/nextspace { + 0 { + over over get + dup 0 eq exch ' ' le or { exit } if + 1 add + } loop + exch pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% Extract a word. word_str must be freed. +% +% ( config_str -- trailing_str word_str ) +% +/getword { + dup nextspace + over over add % get trailing string + 3 1 roll strndup % get word string +} def + + diff --git a/theme_colors.inc b/theme_colors.inc new file mode 100644 index 0000000..e3c185b --- /dev/null +++ b/theme_colors.inc @@ -0,0 +1,4 @@ +/title.bg 0x3f81f1 newcolor +/timer.color lightgray newcolor +/panel.high 0x43b3fe newcolor +/ed.color white newcolor diff --git a/theme_positions.inc b/theme_positions.inc new file mode 100644 index 0000000..5fb9207 --- /dev/null +++ b/theme_positions.inc @@ -0,0 +1,4 @@ +/timer.position.x 620 def +/timer.position.y { panel.text.y } def +/menu.position.x 187 def +/menu.position.y 140 def diff --git a/timeout.inc b/timeout.inc new file mode 100644 index 0000000..3eeebab --- /dev/null +++ b/timeout.inc @@ -0,0 +1,48 @@ +% +% include before common.inc +% + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% ( timeout time ) ==> ( ) +/Timeout { + /timeout.time exch def + /timeout.timeout exch def + + timeout.time 10 mul 150 add 182 div /timeout.seconds exch def + + timeout.seconds timeout.current eq { return } if + /timeout.current timeout.seconds def + timeout.hidden { return } if + + timer.color setcolor + + timeout.time.x timeout.time.y moveto -40 0 rmoveto + currentpoint 40 fontheight image + + timeout.time 0 gt { + timeout.seconds "%d s" timeout.buf sprintf + + timeout.time.x timeout.time.y moveto timeout.buf showright + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialize timeout indicator. +% +% ( ) ==> ( ) +% +/timeout.init { + /timeout.current -1 def + /timeout.buf 64 string def + + /timeout.time.x timer.position.x def + /timeout.time.y timer.position.y def +} def + + +/timeout.x { head.x } def +/timeout.y { head.y } def + +/timeout.hidden false def +/timeout.hidden.showsplash true def diff --git a/timezones.inc b/timezones.inc new file mode 100644 index 0000000..729b46f --- /dev/null +++ b/timezones.inc @@ -0,0 +1,57 @@ + +/.tz.language 0 def +/.tz.name 1 def + +/timezones [ + [ "be_BY" "Europe/Minsk" ] + [ "bg_BG" "Europe/Sofia" ] + [ "bs_BA" "Europe/Sarajevo" ] + [ "cs_CZ" "Europe/Prague" ] + [ "da_DK" "Europe/Copenhagen" ] + [ "de_DE" "Europe/Berlin" ] + [ "en_AU" "Australia/Canberra" ] + [ "en_GB" "Europe/London" ] + [ "en_US" "America/New_York" ] + [ "es_ES" "Europe/Madrid" ] + [ "es_UY" "America/Montevideo" ] + [ "es_VE" "America/Caracas" ] + [ "et_EE" "Europe/Tallinn" ] + [ "fi_FI" "Europe/Helsinki" ] + [ "fr_BE" "Europe/Brussels" ] + [ "fr_CA" "Canada/Pacific" ] + [ "fr_FR" "Europe/Paris" ] + [ "hr_HR" "Europe/Zagreb" ] + [ "hu_HU" "Europe/Budapest" ] + [ "is_IS" "Atlantic/Reykjavik" ] + [ "it_IT" "Europe/Rome" ] + [ "kk_KZ" "Asia/Almaty" ] + [ "lt_LT" "Europe/Vilnius" ] + [ "lv_LV" "Europe/Riga" ] + [ "nl_BE" "Europe/Brussels" ] + [ "nl_NL" "Europe/Amsterdam" ] + [ "nn_NO" "Europe/Oslo" ] + [ "pl_PL" "Europe/Warsaw" ] + [ "pt_BR" "Brazil/East" ] + [ "pt_PT" "Europe/Lisbon" ] + [ "ro_RO" "Europe/Bucharest" ] + [ "ru_RU" "Europe/Moscow" ] + [ "sk_SK" "Europe/Bratislava" ] + [ "sl_SI" "Europe/Ljubljana" ] + [ "sq_AL" "Europe/Tirane" ] + [ "sr_RS" "Europe/Belgrade" ] + [ "sv_SE" "Europe/Stockholm" ] + [ "uk_UA" "Europe/Kiev" ] +] def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Get timezone (timezone). +% +% Returns timezone for lang +% +% ( locale ) ==> ( EEEE/MMMM ) +% +/lang.gettimezone { + timezones { + dup .tz.language get 2 index eq { .tz.name get exch pop exit } { pop } ifelse + } forall +} def diff --git a/window.inc b/window.inc new file mode 100644 index 0000000..505ba86 --- /dev/null +++ b/window.inc @@ -0,0 +1,664 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% window code +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% public words: +% +% window.dialog ( ) ==> ( window ) +% - create a new dialog +% +% window.init ( window ) ==> ( ) +% - initialize window +% +% window.show ( window ) ==> ( ) +% - draw window +% +% window.current ( ) ==> ( window ) +% - the top level window +% +% window.action ( ) ==> ( action ) +% - recent window action +% +% window.input ( key_in ) ==> ( key_out ) +% - handle keyboard input +% +% window.done ( ) ==> ( ) +% - close top level window +% +% +% constants: +% - window.action +% actNothing - do nothing +% actExit - leave boot menu +% actCloseInfo - close info window +% actPassword - password entered +% actStart - boot kernel +% actEject - eject CD +% actPowerOff - turn computer off +% actReboot - reboot computer +% actRedraw - redraw everything +% actNoClose - don't close dialog (it's a flag) +% + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% window related global variables +% + +% all open windows are stacked here +/window.list 8 array def +/window.list.index 0 def + +% the top level window +% /window.current + +% action selected by closing window +/window.action actNothing def + +% window field definitions +/widget.size 0 def +/newfield { widget.size def /widget.size widget.size 1 add def } def + +/.type newfield +/.x newfield +/.y newfield +/.width newfield +/.height newfield +/.width.min newfield +/.position newfield +/.color.fg newfield +/.color.bg newfield +/.font newfield +/.saved newfield +/.saved.areas newfield +/.title newfield +/.title.fg newfield +/.title.bg newfield +/.title.height newfield +/.text newfield +/.text.x newfield +/.text.y newfield +/.buttons newfield +/.button.y newfield +/.ed newfield +/.ed.font newfield +/.ed.list newfield +/.ed.buffer.list newfield +/.ed.text.list newfield +/.ed.width newfield +/.ed.focus newfield +/.ed.pw_field newfield +/.xmenu newfield +/.xmenu.update newfield +/.xmenu.change newfield % like update but the window remains shown +/.xmenu.select newfield +/.xmenu.input newfield +/.xmenu.cleanup newfield + +% window types +/t_dialog 100 def +/t_help 101 def +/t_splash 102 def +/t_main 103 def +/t_xmenu 104 def + +% actions +/actNothing 0 def +/actExit 1 def +/actCloseInfo 2 def +/actPassword 3 def +/actStart 4 def +/actEject 5 def +/actPowerOff 6 def +/actRedraw 7 def +/actRedrawPanel 8 def +/actReboot 9 def +/actNoClose 0x100 def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Create new dialog window. +% +% ( ) ==> ( window ) +% +/window.dialog { + widget.size array + dup .type t_dialog put + dup .position 8 put % centered at 8/10 of screen height + dup .x 0 put + dup .y 0 put + dup .width.min 0 put + dup .color.fg black put + dup .color.bg lightgray put + dup .font font.normal put + dup .title.fg white put + dup .title.bg title.bg put + dup .title.height help.title.height put + dup .text.x 12 put + dup .text.y help.title.height 10 add put +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Handle keyboard input. +% +% ( key_in ) ==> ( key_out ) +% +/window.input { + window.current .undef ne { + window.current .type get + dup t_dialog eq { exch dialog.input exch } if + dup t_help eq { exch help.input exch } if + dup t_splash eq { exch splash.input exch } if + dup t_main eq { exch main.input exch } if + dup t_xmenu eq { exch xmenu.input exch } if + pop + + % maybe there is an editable input field + dup 0 ne { + window.current .ed get .undef ne { + window.current .ed.font get setfont + ed.color setcolor + window.current .ed get exch edit.input + 0 + } if + } if + + % only top level window gets input + pop 0 + + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialize window. +% +% ( window ) ==> ( ) +% +/window.init { + dup .type get + dup t_dialog eq { pop dialog.init return } if + dup t_help eq { pop help.init return } if + dup t_splash eq { pop splash.init return } if + dup t_main eq { pop main.init return } if + dup t_xmenu eq { pop xmenu.init return } if + pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Show window. +% +% ( window ) ==> ( ) +% +/window.show { + dup .type get + dup t_dialog eq { pop dialog.show return } if + dup t_help eq { pop help.show return } if + dup t_splash eq { pop splash.show return } if + dup t_main eq { pop main.show return } if + dup t_xmenu eq { pop xmenu.show return } if + pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Add window to list. +% +% ( window ) ==> ( ) +% +/window.push { + window.list.index window.list length ge { pop return } if + /window.current over def + window.list window.list.index rot put + /window.list.index window.list.index 1 add def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Remove window from list. +% +% ( ) ==> ( window ) +% +/window.pop { + window.list.index 0 eq { .undef return } if + /window.list.index dec + window.list window.list.index get + window.list window.list.index .undef put + /window.current + window.list.index 0 eq { .undef } { window.list window.list.index 1 sub get } ifelse + def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Close top level window. +% +% ( ) ==> ( ) +% +/window.done { + window.current .undef ne { + window.current dup .type get + dup t_help eq { help.done } if + dup t_xmenu eq { xmenu.done } if + pop + % restore saved background and free bg image + dup .saved get .undef ne { + dup .x get 1 sub over .y get 1 sub moveto + dup .saved get dup restorescreen free + dup .saved .undef put + } if + % restore & free saved background areas + dup .saved.areas get .undef ne { + % list of [ x y screen ] + dup .saved.areas get { + dup { } forall + 3 1 roll moveto dup restorescreen free + free + } forall + dup .saved.areas get free + dup .saved.areas .undef put + } if + % specific cleanup actions + window.current .type get + dup t_xmenu eq { xmenu.cleanup } if + pop + % free input field memory + dup .ed get .undef ne { + dup .ed get 2 get free % background + dup .ed get free + dup .ed .undef put + } if + dup .ed.text.list get free + dup .ed.list get dup { + { dup 2 get free free } forall + } { pop } ifelse + dup .ed.list get free + pop + % remove it from window list + window.pop + % free buttons & button list + dup .buttons get + dup .undef ne { + dup length 0 gt { + dup length 1 sub 0 1 rot { + over exch get free + } for + } if + } if + free + % free window + free + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Handle keyboard input. +% +% ( key_in ) ==> ( key_out ) +% +/dialog.input { + dup 0 eq { return } if + + /window.buttons window.current .buttons get def + + window.buttons .undef ne { window.buttons length { + + dup keyEnter eq { + window.buttons window.findselected + over over get 7 get /window.action exch def get + dup button.press 100000 usleep + window.action actNoClose and { + window.action dialog.specialaction { button.show } if + } { + pop window.done + } ifelse + pop 0 + } if + + window.current .ed.list get { + dup keyDown eq over keyTab eq or { + window.current .ed.focus get + window.current .ed.list get over get edit.hidecursor + + 1 add window.current .ed.list get length mod + window.current .ed.focus 2 index put + window.current .ed.list get exch get edit.showcursor + pop 0 + } if + + dup keyUp eq over keyShiftTab eq or { + window.current .ed.focus get + window.current .ed.list get over get edit.hidecursor + + 1 sub window.current .ed.list get length exch over add exch mod + window.current .ed.focus 2 index put + window.current .ed.list get exch get edit.showcursor + pop 0 + } if + +% dup keyTab eq { +% window.findselected 1 add window.buttons length mod +% window.selectbutton +% pop 0 +% } if + + } { + dup keyTab eq over keyRight eq or over keyDown eq or { + window.findselected 1 add window.buttons length mod + window.selectbutton + pop 0 + } if + + dup keyLeft eq over keyUp eq or { + window.findselected window.buttons length 1 sub add window.buttons length mod + window.selectbutton + pop 0 + } if + } ifelse + + dup window.findkey dup 0 ge { + window.buttons exch + over over get 7 get /window.action exch def get + dup button.press 100000 usleep + window.action actNoClose and { + window.action dialog.specialaction { button.show } if + } { + pop window.done + } ifelse + pop 0 + } { + pop + } ifelse + + } if } if + + + % maybe there are input fields + dup 0 ne { + window.current .ed.list get dup { + window.current .ed.font get + window.current .ed.focus get window.current .ed.pw_field get eq { pwmode } if + setfont + ed.color setcolor + + window.current .ed.focus get get exch edit.input + 0 + } { pop } ifelse + } if + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Find selected button. +% +% ( ) ==> ( button_idx ) +% +/window.findselected { + 0 + 0 1 window.buttons length 1 sub { + dup + window.buttons exch get 5 get + { + exch pop exit + } { + pop + } ifelse + } for +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Find button for key. +% +% ( key ) ==> ( button_idx ) +% +% button_idx = -1 if not found +% +/window.findkey { + /window.key exch def + -1 + window.key 0 eq { return } if + 0 1 window.buttons length 1 sub { + dup + window.buttons exch get 6 get window.key eq + { + exch pop exit + } { + pop + } ifelse + } for +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Select button. +% +% ( button_idx ) ==> ( ) +% +/window.selectbutton { + window.findselected + over over eq { + pop pop + } { + window.buttons exch get button.notdefault button.show + window.buttons exch get button.default button.show + } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Initialize dialog window. +% +% ( window ) ==> ( ) +% +/dialog.init { + /dialog.tmp exch def + + dialog.tmp .font get setfont + + dialog.tmp .text get dup "" ne { strsize } { pop 0 0 } ifelse + /dialog.height exch dialog.tmp .text.y get 10 add add def + /dialog.width exch dialog.tmp .text.x get 1 add 2 mul add dialog.tmp .width.min get max def + + /dialog.width dialog.tmp .title get strsize pop dialog.tmp .text.x get 1 add 2 mul add dialog.width max def + + dialog.tmp .ed.text.list get dup { + /dialog.width + dialog.tmp .ed.width get dialog.tmp .text.x get 1 add 2 mul add 8 add dialog.width max + def + { + strsize + /dialog.height exch dialog.height add def + /dialog.width exch dialog.tmp .text.x get 1 add 2 mul add dialog.width max def + } forall + } { pop } ifelse + + dialog.tmp .ed.buffer.list get dup { + length lineheight 20 add mul /dialog.height exch dialog.height add def + } { pop } ifelse + + /window.buttons dialog.tmp .buttons get def + + /dialog.button.y dialog.height 5 add def + + window.buttons .undef ne { window.buttons length { + /dialog.height window.buttons 0 get 3 get dialog.button.y add 8 add def + } if } if + + /dialog.y screen.size exch pop dialog.tmp .position get mul 10 div dialog.height sub 2 div def + + window.buttons .undef ne { window.buttons length { + 10 + 0 1 window.buttons length 1 sub { + window.buttons exch get + dup 1 dialog.button.y dialog.y add put + 2 get 10 add add + } for + + dialog.width max /dialog.width exch def + } if } if + + % adjust to window size + dialog.tmp .ed.width get .undef ne { + dialog.tmp .ed.width over over get dialog.width 30 sub max put + } if + + /dialog.x screen.size pop dialog.width sub 2 div def + + window.buttons .undef ne { window.buttons length { + % calculate button x positions + dialog.width 0 + 0 1 window.buttons length 1 sub { + window.buttons exch get 2 get add + } for + sub window.buttons length 1 add div + dialog.x over add + 0 1 window.buttons length 1 sub { + window.buttons exch get + over over 0 rot put + 2 get add over add + } for + pop pop + } if } if + + % store values + + dialog.tmp + dup .x dialog.x put + dup .y dialog.y put + dup .width dialog.width put + dup .height dialog.height put + .button.y dialog.button.y put + + /dialog.tmp .undef def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw dialog window. +% +% ( window ) ==> ( ) +% +/dialog.show { + /dialog.tmp exch def + + % put into list early, so drawing functions can access it there + dialog.tmp window.push + + % now start drawing + + dialog.tmp .x get 1 sub dialog.tmp .y get 1 sub moveto + white black + dialog.tmp .width get 2 add dialog.tmp .height get 2 add + over over + savescreen + dialog.tmp .saved rot put + drawborder + + dialog.tmp .color.bg get setcolor + dialog.tmp .x get dialog.tmp .y get moveto + dialog.tmp .width get dialog.tmp .height get fillrect + + dialog.tmp .title.bg get setcolor + dialog.tmp .x get 1 add dialog.tmp .y get 1 add moveto + dialog.tmp .width get 2 sub dialog.tmp .title.height get 1 sub fillrect + + dialog.tmp .x get 10 add dialog.tmp .y get 3 add moveto + dialog.tmp .title.fg get setcolor + dialog.tmp .title get show + + dialog.tmp .color.fg get setcolor + dialog.tmp .x get dialog.tmp .y get moveto + dialog.tmp .text.x get dialog.tmp .text.y get rmoveto + dialog.tmp .text get show + + dialog.tmp .ed.text.list get dup { + /dialog.tmp.idx 0 def + { + show + dialog.tmp .ed.buffer.list get dialog.tmp.idx get + + dup { + + 3 7 rmoveto + + /dialog.tmp.buf [ + currentpoint + dialog.tmp .ed.width get fontheight 2 add savescreen + 0 0 + 0 0 0 + ] def + + dialog.tmp.buf 3 2 index put + dialog.tmp.buf 4 rot cvp length put + + dialog.tmp .ed.list get dialog.tmp.idx dialog.tmp.buf put + + currentcolor + currentpoint over 1 sub over 2 sub moveto + black white dialog.tmp .ed.width get 2 add fontheight 5 add drawborder + moveto -3 lineheight 20 add 7 sub rmoveto + setcolor + + currentfont + % hide text in password fields + dialog.tmp.idx dialog.tmp .ed.pw_field get eq { + dialog.tmp .ed.font get pwmode setfont + } if + dialog.tmp.buf dup 3 get edit.init + setfont + + dialog.tmp .ed.focus get dialog.tmp.idx ne { dialog.tmp.buf edit.hidecursor } if + + } { pop } ifelse + + /dialog.tmp.idx inc + } forall + } { pop } ifelse + + dialog.tmp .buttons get .undef ne { dialog.tmp .buttons get length { + 0 1 dialog.tmp .buttons get length 1 sub { + dialog.tmp .buttons get exch get button.show + } for + } if } if + + /dialog.tmp .undef def + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Do something without closing the window. +% +% ( action ) ==> ( true|false ) +% +% Returns whether the window still exists. +% +/dialog.specialaction { + actNoClose not and + + true exch + + dup actEject eq { + bootdrive eject pop + } if + + dup actPowerOff eq { + poweroff + } if + + dup actReboot eq { + reboot + } if + + pop +} def + + diff --git a/xmenu.inc b/xmenu.inc new file mode 100644 index 0000000..00877dd --- /dev/null +++ b/xmenu.inc @@ -0,0 +1,522 @@ +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% +% List dialog handling. +% +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Some global vars. +% +/xmenu.vspace.default { xmenu .xm_list get length 15 ge { 2 } { 2 } ifelse } def +/xmenu.hspace 12 def +/xmenu.light white def +/xmenu.dark black def +/xmenu.font font.normal def +/xmenu.normal.bg lightgray def +/xmenu.normal.fg black def +/xmenu.selected.fg white def +/xmenu.selected.bg 0x6c6c6c newcolor + +small_layout { + /xmenu.maxlines 19 def +} { + /xmenu.maxlines 19 def +} ifelse + +% xmenu layout +% +% [ selected_entry string_list x y panel_x ] +% +/.xm_current 0 def % selected entry +/.xm_list 1 def % string list +/.xm_x 2 def % menu x pos +/.xm_y 3 def % menu y pos +/.xm_width 4 def % menu width per column +/.xm_height 5 def % menu height +/.xm_panel_x 6 def % panel entry x pos +/.xm_panel_width 7 def % panel entry width +/.xm_panel_height 8 def % panel entry height +/.xm_vspace 9 def % vspace per menu +/.xm_title 10 def % xmenu title +/.xm_columns 11 def % menu columns +/.xm_check 12 def % if non-zero, use checkboxes +/.xm_allselected 13 def % all selected checkboxes +/.xm_size 14 def % xmenu size + + +% short hands +/xmenu.x { xmenu .xm_x get } def +/xmenu.y { xmenu .xm_y get } def +/xmenu.width { xmenu .xm_width get } def +/xmenu.height { xmenu .xm_height get } def +/xmenu.columns { xmenu .xm_columns get } def + +/xmenu.vspace { xmenu .xm_vspace get dup .undef ne { } { pop xmenu.vspace.default } ifelse } def + +/xmenu.saved { xmenu.saved.areas xmenu.column get 2 get } def + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Create new xmenu. +% +% ( ) ==> ( window ) +% +/window.xmenu { + widget.size array + dup .type t_xmenu put + dup .xmenu.select .undef put + dup .xmenu.input .undef put +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Handle keyboard input. +% +% ( key_in ) ==> ( key_out ) +% +/xmenu.input { + dup 0 eq { return } if + + dup keyEsc eq { + xmenu 0 xmenu.oldentry put + window.done + pop 0 + } if + + dup keyEnter eq { + xmenu .xm_check get { + xmenu .xm_allselected get xmenu .xm_current get over over get not put + xmenu .xm_current get xmenu.viewentry + window.current .xmenu.change get + } { + window.current .xmenu.update get + window.done + } ifelse + exec + pop 0 + } if + + dup ' ' eq { + xmenu .xm_check get { + xmenu .xm_allselected get xmenu .xm_current get over over get not put + xmenu .xm_current get xmenu.viewentry + window.current .xmenu.change get exec + dup .undef ne { exec } { pop } ifelse + } if + pop 0 + } if + + dup keyDown eq { + xmenu .xm_current get 1 add xmenu.select + pop 0 + } if + + dup keyUp eq { + xmenu .xm_current get 1 sub xmenu.select + pop 0 + } if + + dup keyPgDown eq { + xmenu .xm_current get 5 add + xmenu .xm_list get length 1 sub min xmenu.select + pop 0 + } if + + dup keyPgUp eq { + xmenu .xm_current get 5 sub + 0 max xmenu.select + pop 0 + } if + + dup keyHome eq { + 0 xmenu.select + pop 0 + } if + + dup keyEnd eq { + xmenu .xm_list get length 1 sub xmenu.select + pop 0 + } if + + dup keyRight eq { + xmenu .xm_current get + dup xmenu.maxlines div 1 add xmenu.columns mod xmenu.maxlines mul + exch xmenu.maxlines mod add + xmenu .xm_list get length 1 sub min xmenu.select + pop 0 + } if + + dup keyLeft eq { + xmenu .xm_current get + dup xmenu.maxlines div xmenu.columns add 1 sub xmenu.columns mod xmenu.maxlines mul + exch xmenu.maxlines mod add + xmenu .xm_list get length 1 sub min xmenu.select + pop 0 + } if + + dup keyF1 eq { + show_help + pop 0 + } if + + window.current .xmenu.input get dup .undef ne { exec } { pop } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Calculate menu sizes. +% +% ( ) ==> ( ) +% +/xmenu.sizes { + /xmenu.lheight xmenu.font setfont fontheight xmenu.vspace dup add add def + + xmenu .xm_columns + xmenu .xm_list get length xmenu.maxlines add 1 sub xmenu.maxlines div + put + + /xmenu.lastheight + xmenu .xm_list get length xmenu.maxlines xmenu.columns 1 sub mul sub xmenu.lheight mul + def + + xmenu .xm_height + xmenu .xm_list get length xmenu.maxlines min xmenu.lheight mul + put + + xmenu .xm_width [ + /xmenu.idx 0 def + 0 xmenu .xm_list get { + exec + 0 + over 0 get '\x09' eq { + pop "x\u25b6" strsize pop + } if + exch strsize pop add max + /xmenu.idx inc + xmenu.idx xmenu.maxlines mod 0 eq { + xmenu .xm_check get { "x " strsize pop add } if + xmenu.hspace 2 mul add + 0 + } if + } forall + xmenu.idx xmenu.maxlines mod 0 ne { + xmenu .xm_check get { "x " strsize pop add } if + xmenu.hspace 2 mul add + } { pop } ifelse + ] put + + /xmenu.saved.normal xmenu.columns array def + /xmenu.saved.selected xmenu.columns array def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Width up to but not including specified column. +% +% ( column ) ==> ( width ) +% +/xmenu.widthupto { + % width up to column 0 is 0; but '0 1 -1 { } for' always runs once, so + % special-case that + dup { + 0 exch + 0 1 rot 1 sub { + xmenu.width exch get 2 add add + } for + } if +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Init and show menu. +% +% ( window ) ==> ( ) +% +% xmenu: [ selected_entry [ text0 text1 ... ] x y ] +% +/xmenu.init { + /xmenu over .xmenu get def + + xmenu.sizes + + dup .saved.areas xmenu.columns + xmenu.columns 1 gt xmenu .xm_title get .undef ne and { 1 add } if + array /xmenu.saved.areas over def put + + 0 1 xmenu.columns 1 sub { + /xmenu.column exch def + + dup .saved.areas get xmenu.column + + [ + xmenu.column xmenu.widthupto xmenu.x add 1 sub xmenu.y 1 sub moveto + currentpoint + + xmenu.light xmenu.dark + xmenu.width xmenu.column get 2 add + xmenu.column 1 add xmenu.columns eq { xmenu.lastheight } { xmenu.height } ifelse 2 add + over over savescreen 5 1 roll + drawborder + + ] put + + } for + + xmenu.columns 1 gt xmenu .xm_title get .undef ne and { + dup .saved.areas get xmenu.columns + [ + xmenu.x 1 sub xmenu.y xmenu.vspace sub xmenu.lheight sub 1 sub moveto + currentpoint + + xmenu.light xmenu.dark + xmenu.columns xmenu.widthupto + xmenu.lheight 2 add + over over savescreen 5 1 roll + drawborder + ] put + } if + + 0 1 xmenu .xm_list get length 1 sub { xmenu.viewentry } for + + xmenu.columns 1 gt xmenu .xm_title get .undef ne and { + xmenu.viewheader + } if + + /xmenu.oldentry xmenu .xm_current get def + + dup .x xmenu.x put + .y xmenu.y put + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Close menu. +% +% ( ) ==> ( ) +% +/xmenu.done { + /xmenu.tmpbuf xmenu.tmpbuf free .undef def + xmenu.saved.normal { free } forall + /xmenu.saved.normal xmenu.saved.normal free .undef def + xmenu.saved.selected { free } forall + /xmenu.saved.selected xmenu.saved.selected free .undef def + /xmenu.saved.areas .undef def +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Clean up after menu has been undrawn. +% +% ( ) ==> ( ) +% +/xmenu.cleanup { + window.current .xmenu.cleanup get dup .undef ne { exec } { pop } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw xmenu. +% +% ( window ) ==> ( ) +% +/xmenu.show { + window.push +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw single entry. +% +% ( entry ) ==> ( ) +% +/xmenu.viewentry { + xmenu.font setfont + + dup xmenu.maxlines mod xmenu.lheight mul xmenu.y add /xmenu.pos.y exch def + + dup xmenu.maxlines div /xmenu.column over def + xmenu.widthupto xmenu.x add /xmenu.pos.x exch def + + xmenu.pos.x xmenu.pos.y moveto + + dup xmenu .xm_current get eq { xmenu.saved.selected } { xmenu.saved.normal } ifelse + xmenu.column get + + dup { + transp { pop } { restorescreen } ifelse + } { + pop + + dup xmenu .xm_current get eq { xmenu.selected.bg } { xmenu.normal.bg } ifelse + setcolor xmenu.width xmenu.column get xmenu.lheight fillrect + + dup xmenu .xm_current get eq { + xmenu.pos.x xmenu.pos.y moveto + xmenu.dark xmenu.light + xmenu.width xmenu.column get xmenu.lheight + drawborder + } if + + dup xmenu .xm_current get eq { xmenu.saved.selected } { xmenu.saved.normal } ifelse + xmenu.column + xmenu.pos.x xmenu.pos.y moveto + xmenu.width xmenu.column get xmenu.lheight + savescreen + put + } ifelse + + + transp { + % copy entry to avoid reading the screen again + dup xmenu .xm_current get eq { xmenu.saved.selected } { xmenu.saved.normal } ifelse + xmenu.column get + xmenu.tmpbuf .undef eq { + dup length malloc /xmenu.tmpbuf exch def + } if + xmenu.tmpbuf exch dup length memcpy + + 0 xmenu.pos.y xmenu.y sub moveto 1 1 rmoveto + xmenu.saved transp xmenu.tmpbuf blend + + xmenu.pos.x xmenu.pos.y moveto xmenu.tmpbuf restorescreen + } if + + dup xmenu .xm_current get eq { xmenu.selected.fg } { xmenu.normal.fg } ifelse setcolor + xmenu.pos.x xmenu.hspace add xmenu.pos.y xmenu.vspace add moveto + xmenu .xm_check get { + xmenu .xm_allselected get over get { + "x " show + } { + "x " strsize pop 0 rmoveto + } ifelse + } if + xmenu .xm_list get over get exec show + + xmenu .xm_list get over get exec + 0 get 9 eq { + xmenu.pos.x xmenu.width xmenu.column get add 8 sub xmenu.pos.y 4 add moveto "\u25b6" showright + } if + + pop + +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Draw menu header. +% +% ( ) ==> ( ) +% +/xmenu.viewheader { + xmenu.font setfont + + /xmenu.pos.y xmenu.y xmenu.vspace sub xmenu.lheight sub def + /xmenu.header.width xmenu.columns xmenu.widthupto 2 sub def + + xmenu.x xmenu.pos.y moveto + + xmenu.normal.bg setcolor + xmenu.header.width xmenu.lheight fillrect + + xmenu.normal.fg setcolor + xmenu.x xmenu.header.width 2 div add + xmenu.pos.y xmenu.vspace add + moveto + xmenu .xm_title get exec showcenter +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Select menu entry. +% +% ( new_entry ) ==> ( ) +% +/xmenu.select { + dup 0 lt { xmenu .xm_list get length add } if + dup xmenu .xm_list get length ge { xmenu .xm_list get length sub } if + + xmenu .xm_current get over xmenu .xm_current rot put + xmenu.viewentry + xmenu.viewentry + window.current .xmenu.select get dup .undef ne { exec } { pop } ifelse +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Panel/xmenu helper function. +% +% ( ) => ( ) +% +/pmenu.panel.update { + panel.text.moveto + + xmenu.sizes + + xmenu .xm_panel_x currentpoint pop xmenu.hspace sub put + % try to ensure that the menu doesn't overflow the screen + xmenu .xm_x + xmenu .xm_panel_x get + screen.size pop xmenu.columns xmenu.widthupto 10 add sub + min put + + pmenu.update +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Panel/xmenu helper function. +% +% ( ) => ( width ) +% +/pmenu.width { + % Use this instead of the line below and remove the actRedrawPanel + % things if you want fixed size panel entries. + + % xmenu .xm_panel_width get xmenu.hspace 2 mul sub + + xmenu .xm_title get dup .undef eq { + pop xmenu .xm_list get xmenu .xm_current get get + } if + exec strsize pop +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Panel/xmenu helper function. +% +% ( ) => ( ) +% +/pmenu.update { + xmenu .xm_panel_x get xmenu.hspace add panel.text.y moveto + +% currently not needed - we're redrawing the whole panel anyway +% xmenu .xm_panel_width get xmenu.hspace sub xmenu .xm_panel_height get +% panel.bg setcolor fillrect + + panel.normal setcolor + panel.font setfont + xmenu .xm_panel_x get xmenu.hspace add + panel.text.y + moveto + xmenu .xm_title get dup .undef eq { + pop xmenu .xm_list get xmenu .xm_current get get + } if + exec show +} def + + +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +% Panel/xmenu helper function. +% +% ( ) => ( ) +% +/pmenu.init { + xmenu.sizes + + xmenu .xm_y panel.text.y 1 sub xmenu.height sub put + xmenu .xm_panel_width xmenu.width 0 get put + xmenu .xm_panel_height fontheight put +} def + +