diff --git a/COPYING b/COPYING index 03b7501..d265617 100644 --- a/COPYING +++ b/COPYING @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** diff --git a/INSTALL b/INSTALL index b50b4a0..2ca2683 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** @@ -48,7 +48,7 @@ and installation: systems, these files are part of XXX-dev packages. 6. The GNU Perfect Hash Function Generator, gperf. This utility program - is required for parts of the GNU Portability Library. + may be required for parts of the GNU Portability Library. Installation @@ -102,12 +102,12 @@ You can also run configure in a separate build-only directory tree. This feature requires GNU Make and allows you to keep the source code tree from being modified by the compilation process. To use this option, create a separate build directory, then run configure. For example, if you placed -the Star Traders source code tree in $HOME/src/trader-7.4, you could run +the Star Traders source code tree in $HOME/src/trader-7.5, you could run something like: - mkdir $HOME/build/trader-build-7.4 - cd $HOME/build/trader-build-7.4 - $HOME/src/trader-7.4/configure + mkdir $HOME/build/trader-build-7.5 + cd $HOME/build/trader-build-7.5 + $HOME/src/trader-7.5/configure Once again, the Autoconf manual describes these options (and many others): diff --git a/Makefile.am b/Makefile.am index 5ac867a..026f15d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ ######################################################################### # # # Star Traders: A Game of Interstellar Trading # -# Copyright (C) 1990-2012, John Zaitseff # +# Copyright (C) 1990-2014, John Zaitseff # # # ######################################################################### diff --git a/NEWS b/NEWS index edaeb54..6fca7da 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** @@ -15,6 +15,23 @@ consult the Subversion repository for "trader" on The ZAP Group web server at http://www.zap.org.au/services/svn/. +Version 7.5 (24th May, 2014) +---------------------------- + +Rewrote the file input and output routines so that saved games are now +stored in a much more reliable (scrambled) ASCII format. However, saved +games from older versions will no longer load: the workaround is to start +the older version of Star Traders with the "--dont-encrypt" command line +option, load the relevant game and save it again straight away, change the +second line in the game file from "File API 7.2" to "File API 7.5", then +run the new version of Star Traders. + +Added translations for Norwegian Bokmål, Danish and Esperanto (in that +order), with thanks to Johnny A. Solbu, Joe Hansen and Felipe Castro. +Updated auxiliary files to the latest versions available from the Gnulib +GNU Portability Library and the GNU Autoconf project. + + Version 7.4 (9th May, 2012) --------------------------- diff --git a/README b/README index 872d955..0f59a23 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** @@ -67,7 +67,7 @@ welcomed! Please send these to: Copyright ========= -Copyright (C) 1990-2012, John Zaitseff. +Copyright (C) 1990-2014, John Zaitseff. Star Traders is free software that is distributed under the terms of the GNU General Public License. You can redistribute it and/or modify it diff --git a/build-aux/README b/build-aux/README index ee5b8ee..d828472 100644 --- a/build-aux/README +++ b/build-aux/README @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** diff --git a/configure.ac b/configure.ac index 4699ff5..c127a9a 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ dnl ********************************************************************* dnl * * dnl * Star Traders: A Game of Interstellar Trading * -dnl * Copyright (C) 1990-2012, John Zaitseff * +dnl * Copyright (C) 1990-2014, John Zaitseff * dnl * * dnl ********************************************************************* dnl @@ -26,7 +26,7 @@ dnl You should have received a copy of the GNU General Public License dnl along with this program. If not, see http://www.gnu.org/licenses/. -AC_INIT([Star Traders], [7.4], [J.Zaitseff@zap.org.au], [trader], [http://www.zap.org.au/software/trader/]) +AC_INIT([Star Traders], [7.5], [J.Zaitseff@zap.org.au], [trader], [http://www.zap.org.au/software/trader/]) AC_DEFINE([PACKAGE_AUTHOR], ["John Zaitseff"], [Package author]) AC_PREREQ([2.67]) diff --git a/doc/Makefile.am b/doc/Makefile.am index b4ce16b..39e078d 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,7 +1,7 @@ ######################################################################### # # # Star Traders: A Game of Interstellar Trading # -# Copyright (C) 1990-2012, John Zaitseff # +# Copyright (C) 1990-2014, John Zaitseff # # # ######################################################################### diff --git a/doc/README b/doc/README index 7e6788b..4b63e97 100644 --- a/doc/README +++ b/doc/README @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** diff --git a/doc/trader.6 b/doc/trader.6 index 2621640..0f95a17 100644 --- a/doc/trader.6 +++ b/doc/trader.6 @@ -1,7 +1,7 @@ .\" ********************************************************************* .\" * * .\" * Star Traders: A Game of Interstellar Trading * -.\" * Copyright (C) 1990-2012, John Zaitseff * +.\" * Copyright (C) 1990-2014, John Zaitseff * .\" * * .\" ********************************************************************* .\" @@ -41,7 +41,7 @@ .if \n[.g] .mso www.tmac .\" .\" ********************************************************************* -.TH TRADER 6 "16th March, 2012" "Unix-like systems" +.TH TRADER 6 "24th May, 2014" "Unix-like systems" .SH NAME trader \- a game of interstellar trading .\" ********************************************************************* @@ -200,7 +200,7 @@ Australia .PP .\" ********************************************************************* .SH COPYRIGHT -Copyright \(co 1990\-2012, John Zaitseff. +Copyright \(co 1990\-2014, John Zaitseff. .PP \fBStar Traders\fR is free software that is distributed under the terms of the GNU General Public License. You can redistribute it and/or modify diff --git a/lib/README b/lib/README index 2126ec9..17d07eb 100644 --- a/lib/README +++ b/lib/README @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** diff --git a/m4/Makefile.am b/m4/Makefile.am index be2bc06..5f5c52f 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -1,7 +1,7 @@ ######################################################################### # # # Star Traders: A Game of Interstellar Trading # -# Copyright (C) 1990-2012, John Zaitseff # +# Copyright (C) 1990-2014, John Zaitseff # # # ######################################################################### @@ -32,5 +32,6 @@ EXTRA_DIST = \ ax_append_flag.m4 \ ax_cflags_warn_all.m4 \ ax_c___attribute__.m4 \ + ax_require_defined.m4 \ ax_with_curses.m4 \ gnulib-cache.m4 diff --git a/m4/README b/m4/README index 6be4a53..4489a04 100644 --- a/m4/README +++ b/m4/README @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** @@ -13,6 +13,7 @@ that project's web site, http://www.gnu.org/software/autoconf-archive/: ax_append_flag.m4 ax_cflags_warn_all.m4 ax_c___attribute__.m4 + ax_require_defined.m4 ax_with_curses.m4 The following macro was generated by running the GNU Portability Library diff --git a/m4/ax_cflags_warn_all.m4 b/m4/ax_cflags_warn_all.m4 index c22e37f..1f07799 100644 --- a/m4/ax_cflags_warn_all.m4 +++ b/m4/ax_cflags_warn_all.m4 @@ -58,7 +58,7 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 13 +#serial 15 AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl @@ -84,6 +84,7 @@ done FLAGS="$ac_save_[]FLAGS" ]) AS_VAR_POPDEF([FLAGS])dnl +AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; diff --git a/m4/ax_require_defined.m4 b/m4/ax_require_defined.m4 new file mode 100644 index 0000000..cae1111 --- /dev/null +++ b/m4/ax_require_defined.m4 @@ -0,0 +1,37 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_require_defined.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_REQUIRE_DEFINED(MACRO) +# +# DESCRIPTION +# +# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have +# been defined and thus are available for use. This avoids random issues +# where a macro isn't expanded. Instead the configure script emits a +# non-fatal: +# +# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found +# +# It's like AC_REQUIRE except it doesn't expand the required macro. +# +# Here's an example: +# +# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +# +# LICENSE +# +# Copyright (c) 2014 Mike Frysinger +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([AX_REQUIRE_DEFINED], [dnl + m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) +])dnl AX_REQUIRE_DEFINED diff --git a/m4/ax_with_curses.m4 b/m4/ax_with_curses.m4 index 33a37ac..e4cbd31 100644 --- a/m4/ax_with_curses.m4 +++ b/m4/ax_with_curses.m4 @@ -88,7 +88,7 @@ # # AX_WITH_CURSES # if test "x$ax_cv_ncursesw" != xyes && test "x$ax_cv_ncurses" != xyes; then -# AX_MSG_ERROR([requires either NcursesW or Ncurses library]) +# AC_MSG_ERROR([requires either NcursesW or Ncurses library]) # fi # # If any Curses library will do (but one must be present and must support @@ -182,7 +182,7 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 13 +#serial 15 AU_ALIAS([MP_WITH_CURSES], [AX_WITH_CURSES]) AC_DEFUN([AX_WITH_CURSES], [ diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4 index 958524c..1329544 100644 --- a/m4/gnulib-cache.m4 +++ b/m4/gnulib-cache.m4 @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2012 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ # Specification in the form of a command-line invocation: -# gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl assert btowc config-h getopt-gnu gettext gettext-h gettimeofday locale mbrtowc mbsrtowcs stdbool stdio striconv string strstr sys_stat sys_time unistd wchar wcrtomb wcsdup wctob wctype-h +# gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl assert btowc config-h crc getopt-gnu gettext gettext-h gettimeofday locale mbrtowc mbsrtowcs stdbool stdio striconv string strstr sys_stat sys_time unistd wchar wcrtomb wcsdup wctob wctype-h # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([]) @@ -35,6 +35,7 @@ gl_MODULES([ assert btowc config-h + crc getopt-gnu gettext gettext-h @@ -66,4 +67,4 @@ gl_LIB([libgnu]) gl_MAKEFILE_NAME([]) gl_MACRO_PREFIX([gl]) gl_PO_DOMAIN([]) -gl_WITNESS_C_DOMAIN([]) +gl_WITNESS_C_MACRO([]) diff --git a/po/LINGUAS b/po/LINGUAS index f7d00e5..04232d3 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,7 +1,7 @@ ######################################################################### # # # Star Traders: A Game of Interstellar Trading # -# Copyright (C) 1990-2012, John Zaitseff # +# Copyright (C) 1990-2014, John Zaitseff # # # ######################################################################### @@ -32,8 +32,11 @@ en_CA en_GB en_US +da de +eo fi fr hr +nb ru diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 83d8838..fabdc76 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -8,13 +8,14 @@ # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # -# Origin: gettext-0.18 +# Origin: gettext-0.18.3 GETTEXT_MACRO_VERSION = 0.18 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +SED = @SED@ SHELL = /bin/sh @SET_MAKE@ @@ -96,14 +97,14 @@ CATALOGS = @CATALOGS@ mv t-$@ $@ -all: check-macro-version all-@USE_NLS@ +all: all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. -check-macro-version: - @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ +CHECK_MACRO_VERSION = \ + test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } @@ -123,6 +124,7 @@ check-macro-version: # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot + @$(CHECK_MACRO_VERSION) test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ @@ -137,8 +139,16 @@ stamp-po: $(srcdir)/$(DOMAIN).pot # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +# The determination of whether the package xyz is a GNU one is based on the +# heuristic whether some file in the top level directory mentions "GNU xyz". +# If GNU 'find' is available, we avoid grepping through monster files. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed - if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \ + else \ + LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + fi; \ + } | grep -v 'libtool:' >/dev/null; then \ package_gnu='GNU '; \ else \ package_gnu=''; \ diff --git a/po/Makevars b/po/Makevars index 2ef819d..81fd7bb 100644 --- a/po/Makevars +++ b/po/Makevars @@ -1,7 +1,7 @@ ######################################################################### # # # Star Traders: A Game of Interstellar Trading # -# Copyright (C) 1990-2012, John Zaitseff # +# Copyright (C) 1990-2014, John Zaitseff # # # ######################################################################### @@ -26,14 +26,14 @@ # along with this program. If not, see http://www.gnu.org/licenses/. -# The message domain is the same as the package name +# The message domain is the same as the package name. DOMAIN = $(PACKAGE) -# These two variables depend on the location of this directory +# These two variables depend on the location of this directory. subdir = po top_builddir = .. -# These options get passed to xgettext +# These options get passed to xgettext. XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --width=132 \ --flag='err_exit:1:c-format' --flag='errno_exit:1:c-format' \ --flag='txdlgbox:11:c-format' --flag='txdlgbox:12:c-format' \ @@ -42,20 +42,26 @@ XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --width=132 \ --flag='center:8:c-format' \ --flag='right:8:c-format' -# These options get passed to msgmerge -MSGMERGE_OPTIONS = --width=132 - -# Copyright holder that gets inserted into the header of the +# This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. COPYRIGHT_HOLDER = John Zaitseff -# E-mail address or URL used by translators to report bugs in the -# untranslated (original) strings +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings. MSGID_BUGS_ADDRESS = J.Zaitseff@zap.org.au -# List of locale categories, beyond LC_MESSAGES, for which the message -# catalogs shall be used. It is usually empty. +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = -# Additional files to distribute +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = yes + +# These options get passed to msgmerge. +MSGMERGE_OPTIONS = --width=132 + +# Additional files to distribute. DISTFILES += README diff --git a/po/POTFILES.in b/po/POTFILES.in index a43bd39..aae9ee0 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,7 +1,7 @@ ######################################################################### # # # Star Traders: A Game of Interstellar Trading # -# Copyright (C) 1990-2012, John Zaitseff # +# Copyright (C) 1990-2014, John Zaitseff # # # ######################################################################### diff --git a/po/README b/po/README index b0ea9dd..498336c 100644 --- a/po/README +++ b/po/README @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** diff --git a/po/Rules-quot b/po/Rules-quot index af52487..5931e53 100644 --- a/po/Rules-quot +++ b/po/Rules-quot @@ -14,13 +14,13 @@ en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..7747a8d --- /dev/null +++ b/po/da.po @@ -0,0 +1,1725 @@ +# ************************************************************************* +# * * +# * Danish Translations for Star Traders * +# * Copyright (C) 2012-14, John Zaitseff * +# * * +# ************************************************************************* +# +# This file is distributed under the same license as the trader package. +# +# Contributors: +# Joe Hansen , 2012-13. +# +msgid "" +msgstr "" +"Project-Id-Version: trader 7.5\n" +"Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 10:57+1000\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/trader.c:235 +#, c-format +msgid "%s: invalid value for --max-turn: `%s'\n" +msgstr "%s: ugyldig værdi for --max-turn: »%s«\n" + +#: src/trader.c:251 +#, c-format +msgid "%s: invalid operand `%s'\n" +msgstr "%s: ugyldig operand »%s«\n" + +#: src/trader.c:260 +#, c-format +msgid "%s: invalid game number `%s'\n" +msgstr "%s: ugyldigt spilnummer »%s«\n" + +#: src/trader.c:269 +#, c-format +msgid "%s: extra operand `%s'\n" +msgstr "%s: ekstra operand »%s«\n" + +#. TRANSLATORS: "John Zaitseff" [IPA d͡ʒɒn ˈzaɪ̯t͡səf] is the proper +#. name of the author. The IPA pronunciation in this comment is in +#. UTF-8 encoding. +#: src/trader.c:284 +#, c-format +msgid "" +"Star Traders (%s) %s\n" +"Copyright (C) %s, John Zaitseff.\n" +"\n" +"Star Traders is a simple game of interstellar trading, where the object\n" +"of the game is to create companies, buy and sell shares, borrow and repay\n" +"money, in order to become the wealthiest player (the winner).\n" +"\n" +"This program is free software that is distributed under the terms of the\n" +"GNU General Public License, version 3 or later. You are welcome to\n" +"modify and/or distribute it under certain conditions. This program has\n" +"NO WARRANTY, to the extent permitted by law; see the License for details.\n" +msgstr "" +"Star Traders (%s) %s\n" +"Ophavsret %s, John Zaitseff.\n" +"\n" +"Star Traders er et simpelt spil med rumhandel, hvor formålet er at oprette\n" +"firmaer, købe og sælge aktier, låne og betale tilbage på lån, alt sammen\n" +"for at blive den rigeste spiller (vinderen).\n" +"\n" +"Dette program er frit programmel, som er distribueret under betingelserne\n" +"i GNU General Public License, version 3 eller senere. Du er velkommen til\n" +"at ændre og/eller distribuere programmet under bestemte betingelser. Dette\n" +"program har INGEN GARANTI, indenfor lovens rammer; se licensen for yderligere\n" +"detaljer.\n" + +#: src/trader.c:308 +#, c-format +msgid "%s: Try `%s --help' for more information.\n" +msgstr "%s: Prøv »%s --help« for yderligere information.\n" + +#: src/trader.c:311 +#, c-format +msgid "Usage: %s [OPTION ...] [GAME]\n" +msgstr "Brug: %s [TILVALG ...] [SPIL]\n" + +#: src/trader.c:312 +#, c-format +msgid "" +"Play Star Traders, a simple game of interstellar trading.\n" +"\n" +msgstr "" +"Spil Star Traders, et simpelt spil med rumhandel.\n" +"\n" + +#: src/trader.c:315 +#, c-format +msgid "" +"Options:\n" +" -V, --version output version information and exit\n" +" -h, --help display this help and exit\n" +" --no-color don't use color for displaying text\n" +" --max-turn=NUM set the number of turns to NUM\n" +"\n" +msgstr "" +"Tilvalg:\n" +" -V, --version vis versionsinformation og afslut\n" +" -h, --help vis denne hjælpetekst og afslut\n" +" --no-color brug ikke farve i tekstvisningen\n" +" --max-turn=ANT sæt antallet af runder til ANT\n" +"\n" + +#: src/trader.c:322 +#, c-format +msgid "" +"If GAME is specified as a number between 1 and 9, load and continue\n" +"playing that game. If GAME is not specified, start a new game.\n" +"\n" +msgstr "" +"Hvis SPIL er angivet som et tal mellem 1 og 9, indlæs og fortsæt\n" +"med at spille. Hvis SPIL ikke er angivet, så start et nyt spil.\n" +"\n" + +#. TRANSLATORS: The first %s is the proper name of the package +#. author, John Zaitseff [IPA d͡ʒɒn ˈzaɪ̯t͡səf]; the second %s is +#. the e-mail address for reporting bugs. Please add ANOTHER +#. line with the (translated) text "Report translation bugs to +#.
\n", with ADDRESS replaced with either an e-mail +#. address or web URL for reporting bugs in your translation. +#: src/trader.c:334 +#, c-format +msgid "Report bugs to %s <%s>.\n" +msgstr "" +"Rapporter fejl til %s <%s>.\n" +"Rapporter oversættelsefejl til Dansk-gruppen .\n" + +#. TRANSLATORS: %s is the e-mail address for reporting bugs. As +#. with the previous string, please add ANOTHER line with the +#. (translated) text "Report translation bugs to
\n", +#. with ADDRESS replaced with either an e-mail address or web URL +#. for reporting bugs in your translation. +#: src/trader.c:341 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Rapporter fejl til <%s>.\n" +"Rapporter oversættelsefejl til Dansk-gruppen .\n" + +#. TRANSLATORS: The first %s is for packagers and may be +#. something like "Debian". +#: src/trader.c:346 +#, c-format +msgid "Report %s bugs to <%s>.\n" +msgstr "Rapporter fejl for %s til <%s>.\n" + +#: src/trader.c:349 +#, c-format +msgid "Star Traders home page: <%s>.\n" +msgstr "Hjemmeside for Star Traders: <%s>.\n" + +#. TRANSLATORS: The eight company names do NOT have to be literal +#. translations of the English names. In fact, if possible, the +#. names should start with successive letters of your alphabet (in +#. English, for example, "A" to "H"), and, ideally, be related to +#. constellations or stars in our galaxy. No company name should be +#. more than 24 characters (column positions, to be precise) long. +#: src/globals.c:47 +msgid "Altair Starways" +msgstr "Andalens stjernefirma" + +#: src/globals.c:48 +msgid "Betelgeuse, Ltd" +msgstr "Bredevang ApS" + +#: src/globals.c:49 +msgid "Capella Freight Co" +msgstr "Capellefragtfirmaet" + +#: src/globals.c:50 +msgid "Denebola Shippers" +msgstr "Denebola" + +#: src/globals.c:51 +msgid "Eridani Expediters" +msgstr "Eridani" + +#: src/globals.c:52 +msgid "Fornax Express" +msgstr "Fornaxekspressen" + +#: src/globals.c:53 +msgid "Gemeni Inc" +msgstr "Gemini A/S" + +#: src/globals.c:54 +msgid "Hercules and Co" +msgstr "Herkules og søn" + +#. TRANSLATORS: This string specifies the keycodes (keyboard input +#. codes) used to enter the Stock Transaction window for each +#. company. There must be exactly eight characters, one for each +#. company in order, before the ASCII vertical line "|"; these must +#. be EITHER all in upper-case or all in lower-case. If at all +#. possible, these should be successive letters in your alphabet (in +#. English, "A" to "H"). Do NOT use digits or control characters. +#. Do not change or translate anything after the vertical line. +#: src/globals.c:68 +msgid "ABCDEFGH|input|Companies" +msgstr "ABCDEFGH|input|Companies" + +#. TRANSLATORS: This string specifies the keycodes used to select a +#. game move. There must be exactly 20 characters, one for each +#. move, before the ASCII vertical line "|"; these must be EITHER all +#. in upper-case or all in lower-case. If at all possible, these +#. should be successive letters in your alphabet. Do NOT use digits +#. or control characters. Do not change or translate anything after +#. the vertical line. +#: src/globals.c:80 +msgid "ABCDEFGHIJKLMNOPQRST|input|GameMoves" +msgstr "ABCDEFGHIJKLMNOPQRST|input|GameMoves" + +#. TRANSLATORS: This string is used to display the galaxy map to +#. screen. There must be exactly 11 characters before the ASCII +#. vertical line. The first ("." in English) is used for empty +#. space, the second ("+") for outposts, the third ("*") for stars, +#. the remaining for the eight companies. Do not change or translate +#. anything after the vertical line. Double-width characters ARE +#. handled correctly. +#: src/globals.c:92 +msgid ".+*ABCDEFGH|output|MapVals" +msgstr ".+*ABCDEFGH|output|MapVals" + +#. TRANSLATORS: This string is used to display the game moves +#. (choices). There must be exactly 20 characters (NUMBER_MOVES) +#. before the ASCII vertical line. The first character corresponds +#. to the first character in the "input|GameMoves" string, and so on. +#. Do not change or translate anything after the vertical line. +#. Double-width characters ARE handled correctly. +#: src/globals.c:103 +msgid "abcdefghijklmnopqrst|output|GameMoves" +msgstr "abcdefghijklmnopqrst|output|GameMoves" + +#. TRANSLATORS: The ordinal strings "1st" to "8th" are used in the +#. Game Winner dialog box at the end of the game. If ordinals depend +#. on the gender of the player, it may be simpler to list cardinal +#. numbers instead (eg, "No. 1"). Up to five characters are allowed +#. (see ORDINAL_COLS in src/intf.h). +#: src/globals.c:114 +msgid "1st" +msgstr "1." + +#: src/globals.c:115 +msgid "2nd" +msgstr "2." + +#: src/globals.c:116 +msgid "3rd" +msgstr "3." + +#: src/globals.c:117 +msgid "4th" +msgstr "4." + +#: src/globals.c:118 +msgid "5th" +msgstr "5." + +#: src/globals.c:119 +msgid "6th" +msgstr "6." + +#: src/globals.c:120 +msgid "7th" +msgstr "7." + +#: src/globals.c:121 +msgid "8th" +msgstr "8." + +#: src/game.c:117 src/game.c:152 +#, c-format +msgid "Loading game %d... " +msgstr "Indlæser spil %d ... " + +#: src/game.c:226 +#, c-format +msgid " First Player " +msgstr " Første spiller " + +#: src/game.c:227 +#, c-format +msgid "The first player to go is ^{%ls^}." +msgstr "Den første spiller er ^{%ls^}." + +#. TRANSLATORS: The keycode should be modified to +#. match that (or those) specified with msgctxt +#. "input|ContinueGame". +#: src/game.c:259 +#, c-format +msgid "Enter number of players [^{1^}-^{%d^}] or ^{^} to continue a game: " +msgstr "Indtast antallet af spillere [^{1^}-^{%d^}] eller ^{^} for at fortsætte et spil: " + +#. TRANSLATORS: This string specifies the keycodes used to continue a +#. game; these must NOT contain any numeric digit from 1 to 9. The +#. first character (keyboard input code) is used to print the user's +#. response if one of those keys is pressed. Both upper and +#. lower-case versions should be present. +#: src/game.c:276 +msgctxt "input|ContinueGame" +msgid "Cc" +msgstr "Cc" + +#: src/game.c:341 src/move.c:399 +#, c-format +msgid "Enter game number [^{1^}-^{9^}] or ^{^} to cancel: " +msgstr "Indtast spilnummer [^{1^}-^{9^}] eller ^{^} for at afbryde: " + +#: src/game.c:406 +#, c-format +msgid "Please enter your name: " +msgstr "Indtast dit navn: " + +#: src/game.c:425 +#, c-format +msgid "Do you need any instructions? [^{Y^}/^{N^}] " +msgstr "Har du brug for instruktioner? [^{J^}/^{N^}] " + +#: src/game.c:443 +#, c-format +msgid " Enter Player Names " +msgstr " Indtast spillernavne " + +#: src/game.c:451 +#, c-format, range: 1..8 +msgid "Player %d: " +msgstr "Spiller %d: " + +#: src/game.c:529 +#, c-format +msgid "Does any player need instructions? [^{Y^}/^{N^}] " +msgstr "Har en spiller brug for instruktioner? [^{J^}/^{N^}] " + +#: src/game.c:563 +#, c-format +msgid " Game Over " +msgstr " Spillet er slut " + +#: src/game.c:564 +#, c-format +msgid "The game is over after one turn." +msgid_plural "The game is over after %d turns." +msgstr[0] "Spillet er slut efter en runde." +msgstr[1] "Spillet er slut efter %d runder." + +#: src/game.c:575 +#, c-format +msgid " Total Value " +msgstr " Samlet formue " + +#: src/game.c:577 +#, c-format +msgid "Your total value was ^{%N^}." +msgstr "Din samlede formue var ^{%N^}." + +#: src/game.c:588 +#, c-format +msgid "" +"The winner is ^{%ls^}\n" +"who is ^[*** BANKRUPT ***^]" +msgstr "" +"Vinderen er ^{%ls^}\n" +"som er ^[*** KONKURS ***^]" + +#: src/game.c:591 +#, c-format +msgid "" +"The winner is ^{%ls^}\n" +"with a value of ^{%N^}." +msgstr "" +"Vinderen er ^{%ls^}\n" +"med en formue på ^{%N^}." + +#: src/game.c:597 +#, c-format +msgid " Game Winner " +msgstr " Spillets vinder " + +#. TRANSLATORS: "Player" is used as a column title in a +#. table containing all player names. +#: src/game.c:606 src/move.c:868 +#, c-format +msgctxt "subtitle" +msgid "Player" +msgstr "Spiller" + +#. TRANSLATORS: "Total Value" refers to the total worth +#. (shares, cash and debt) of any given player. %ls is the +#. currency symbol of the current locale. +#: src/game.c:611 +#, c-format +msgctxt "subtitle" +msgid "Total Value (%ls)" +msgstr "Samlet formue (%ls)" + +#: src/game.c:645 src/game.c:695 src/exch.c:100 +#, c-format +msgid "Player: ^{%ls^}" +msgstr "Spiller: ^{%ls^}" + +#: src/game.c:648 +#, c-format +msgid " Turn: ^{%d^} " +msgstr " Runde: ^{%d^} " + +#: src/game.c:649 +#, c-format +msgid " ^[*** Last Turn ***^] " +msgstr " ^[*** Sidste runde ***^] " + +#: src/game.c:693 +#, c-format +msgid " Stock Portfolio " +msgstr " Aktieportefølje " + +#. TRANSLATORS: The current player is bankrupt (has no +#. shares or cash, ie, whose total value is zero) +#: src/game.c:702 +#, c-format +msgid "^[* * * B A N K R U P T * * *^]" +msgstr "^[* * * K O N K U R S * * *^]" + +#: src/game.c:717 src/exch.c:112 +#, c-format +msgid "No companies on the map" +msgstr "Ingen firmaer på kortet" + +#. TRANSLATORS: "Company" is a two-line column label in +#. a table containing a list of companies. +#: src/game.c:725 src/exch.c:120 +#, c-format +msgctxt "subtitle" +msgid "" +"\n" +"Company" +msgstr "" +"\n" +"Firma" + +#. TRANSLATORS: "Ownership" is a two-line column label +#. in a table containing the current player's +#. percentage ownership in any given company. The +#. maximum column width is 10 characters (see +#. OWNERSHIP_COLS in src/intf.h). +#: src/game.c:732 +#, c-format +msgctxt "subtitle" +msgid "" +"Ownership\n" +"(%%)" +msgstr "" +"Ejerskab\n" +"(%%)" + +#. TRANSLATORS: "Holdings" is a two-line column label +#. in a table containing the number of shares the +#. current player owns in any given company. The +#. maximum column width is 10 characters (see +#. STOCK_OWNED_COLS in src/intf.h). +#: src/game.c:739 +#, c-format +msgctxt "subtitle" +msgid "" +"Holdings\n" +"(shares)" +msgstr "" +"Depot\n" +"(aktier)" + +#. TRANSLATORS: "Return" is a two-line column label in +#. a table containing the share return as a percentage +#. in any given company. The maximum column width is +#. 10 characters (see SHARE_RETURN_COLS in src/intf.h). +#: src/game.c:746 src/exch.c:141 +#, c-format +msgctxt "subtitle" +msgid "" +"Return\n" +"(%%)" +msgstr "" +"Udbytte\n" +"(%%)" + +#. TRANSLATORS: "Price per share" is a two-line column +#. label in a table containing the price per share in +#. any given company. %ls is the currency symbol in +#. the current locale. The maximum column width is 12 +#. characters INCLUDING the currency symbol (see +#. SHARE_PRICE_COLS in src/intf.h). +#: src/game.c:755 src/exch.c:150 +#, c-format +msgctxt "subtitle" +msgid "" +"Price per\n" +"share (%ls)" +msgstr "" +"Pris per\n" +"aktie (%ls)" + +#. TRANSLATORS: The "Total value", "Current cash", +#. "Current debt" and "Interest rate" labels MUST all be +#. the same length (ie, right-padded with spaces as +#. needed) and must have at least one trailing space so +#. that the display routines work correctly. The maximum +#. length of each label is 36 characters. +#. +#. Note that some of these labels are used for both the +#. Player Status window and the Trading Bank window. +#: src/game.c:796 +#, c-format +msgctxt "label" +msgid "Total value: " +msgstr "Samlet formue: " + +#: src/game.c:800 src/exch.c:324 +#, c-format +msgctxt "label" +msgid "Current cash: " +msgstr "Kontanter: " + +#: src/game.c:807 src/exch.c:332 +#, c-format +msgctxt "label" +msgid "Current debt: " +msgstr "Gæld: " + +#: src/game.c:813 src/exch.c:337 +#, c-format +msgctxt "label" +msgid "Interest rate: " +msgstr "Rente: " + +#. TRANSLATORS: Each label may be up to 37 characters wide +#. (for <1> and <2>) or 38 characters wide (for <3> and +#. ). The sequences "^{" and "^}" change the +#. character rendition (attributes) and take up no space. +#: src/move.c:243 src/exch.c:182 +#, c-format +msgid "^{<1>^} Display stock portfolio" +msgstr "^{<1>^} Vis aktieportefølje" + +#: src/move.c:245 +#, c-format +msgid "^{<2>^} Declare bankruptcy" +msgstr "^{<2>^} Erklær konkurs" + +#: src/move.c:247 +#, c-format +msgid "^{<3>^} Save and end the game" +msgstr "^{<3>^} Gem og afslut spillet" + +#: src/move.c:249 +#, c-format +msgid "^{^} Quit the game" +msgstr "^{^} Afslut spillet" + +#. TRANSLATORS: The maximum column width is 38 characters, +#. including the trailing space. The sequences "^{", "^}", +#. "^[" and "^]" do not take up any room. "%lc" takes up +#. either one or two columns, depending on the appropriate +#. "output|GameMoves" string in the current PO file. +#: src/move.c:258 +#, c-format +msgid "Select move [^[%lc^]-^[%lc^]/^{1^}-^{3^}/^{^}]: " +msgstr "Vælg handling [^[%lc^]-^[%lc^]/^{1^}-^{3^}/^{^}]: " + +#. TRANSLATORS: A game usually consists of +#. DEFAULT_MAX_TURN (50) turns. On each +#. turn, the computer randomly selects +#. NUMBER_MOVES (20) moves (positions on the +#. map); each player selects just one move +#. per turn. "Move" refers to the player's +#. choice. +#: src/move.c:295 +#, c-format +msgid "Move ^{%lc^}" +msgstr "Handling ^{%lc^}" + +#: src/move.c:316 +#, c-format +msgid "^{<2>^} (Declare bankruptcy)" +msgstr "^{<2>^} (Erklær konkurs)" + +#: src/move.c:325 +#, c-format +msgid "^{<3>^} (Save and end the game)" +msgstr "^{<3>^} (Gem og afslut spillet)" + +#: src/move.c:346 +#, c-format +msgid "^{^} (Quit the game)" +msgstr "^{^} (Afslut spillet)" + +#: src/move.c:361 +#, c-format +msgid "Are you sure? [^{Y^}/^{N^}] " +msgstr "Er du sikker? [^{J^}/^{N^}] " + +#: src/move.c:378 src/move.c:456 +#, c-format +msgid "Saving game %d... " +msgstr "Gemmer spil %d ... " + +#: src/move.c:686 src/move.c:694 src/move.c:1052 src/move.c:1089 +#, c-format +msgid " Bankruptcy Court " +msgstr " Konkursretten " + +#. TRANSLATORS: %ls is the player's name. +#: src/move.c:688 +#, c-format +msgid "%ls has been declared bankrupt by the Interstellar Trading Bank." +msgstr "%ls er blevet erklæret konkurs af Den Interstellare Handelsbank." + +#. TRANSLATORS: %ls is the player's name. +#: src/move.c:696 +#, c-format +msgid "%ls has declared bankruptcy." +msgstr "%ls er blevet erklæret konkurs." + +#: src/move.c:764 +#, c-format +msgid " New Company " +msgstr " Nyt firma " + +#: src/move.c:765 +#, c-format +msgid "" +"A new company has been formed!\n" +"Its name is ^{%ls^}." +msgstr "" +"Et nyt firma er blevet dannet!\n" +"Dets navn er ^{%ls^}." + +#: src/move.c:824 +#, c-format +msgid "" +"^{%ls^} has just merged into ^{%ls^}.\n" +"Please note the following transactions:\n" +msgstr "" +"^{%ls^} er blevet fusioneret med ^{%ls^}.\n" +"Bemærk venligst de følgende transaktioner:\n" + +#: src/move.c:830 +#, c-format +msgid " Company Merger " +msgstr " Firmafusion " + +#. TRANSLATORS: "Old stock" refers to the company that has +#. just ceased existence due to a merger. +#. +#. Note that the "Old stock" and "New stock" labels MUST be +#. the same length and must contain a trailing space for the +#. display routines to work correctly. The maximum length of +#. each label is 36 characters. +#: src/move.c:850 +#, c-format +msgctxt "label" +msgid "Old stock: " +msgstr "Gammel aktie: " + +# husk skal være samme længde som ovenstående!!! +#. TRANSLATORS: "New stock" refers to the company that has +#. absorbed the other due to a merger. +#: src/move.c:861 +#, c-format +msgctxt "label" +msgid "New Stock: " +msgstr "Ny aktie: " + +#. TRANSLATORS: "Bonus" refers to the bonus cash amount paid to +#. each player after two companies merge. %ls is the currency +#. symbol in the current locale. The maximum column width is +#. 12 characters INCLUDING the currency symbol (see +#. MERGE_BONUS_COLS in src/intf.h). +#: src/move.c:875 +#, c-format +msgctxt "subtitle" +msgid "Bonus (%ls)" +msgstr "Bonus (%ls)" + +#. TRANSLATORS: "Total" refers to the total number of shares in +#. the new company after a merger. The maximum column width is +#. 8 characters (see MERGE_TOTAL_STOCK_COLS in src/intf.h). +#: src/move.c:880 +#, c-format +msgctxt "subtitle" +msgid "Total" +msgstr "I alt" + +#. TRANSLATORS: "New" refers to how many (new) shares each +#. player receives in the surviving company after a merger. +#. The maximum column width is 8 characters (see +#. MERGE_NEW_STOCK_COLS in src/intf.h). +#: src/move.c:887 +#, c-format +msgctxt "subtitle" +msgid "New" +msgstr "Nye" + +# måske også tidligere kunne bruges, men det er for langt!!! +# ordet skal også bruges i de efterfølgende sætninger. +#. TRANSLATORS: "Old" refers to how many shares each player had +#. in the company ceasing existence. The maximum column width +#. is 8 characters (see MERGE_OLD_STOCK_COLS in src/intf.h). +#: src/move.c:893 +#, c-format +msgctxt "subtitle" +msgid "Old" +msgstr "Gammel" + +#. TRANSLATORS: %ls represents the company name. +#: src/move.c:1054 +#, c-format +msgid "" +"%ls has been declared bankrupt by the Interstellar Trading Bank.\n" +"\n" +"^{All assets have been taken to repay outstanding loans.^}" +msgstr "" +"%ls er blevet erklæret konkurs af Den Interstellare Handelsbank.\n" +"\n" +"^{Alle aktiver er blevet beslaglagt som betaling for udestående lån.^}" + +#. TRANSLATORS: %ls represents the company name. +#: src/move.c:1078 +#, c-format +msgid "" +"%ls has been declared bankrupt by the Interstellar Trading Bank.\n" +"\n" +"^{The Bank has agreed to pay stock holders ^}%.2f%%^{ of the share value on each share owned.^}" +msgstr "" +"%ls er blevet erklæret konkurs af Den Interstellare Handelsbank.\n" +"\n" +"^{Banken har indvilliget i at betale aktionærerne ^}%.2f%%^{ af aktieværdien på hver ejet aktie.^}" + +#. TRANSLATORS: The label "Amount paid per share" +#. refers to payment made by the Interstellar +#. Trading Bank to each player upon company +#. bankruptcy. This label MUST be the same +#. length as "Old share value" and MUST have at +#. least one trailing space for the display +#. routines to work correctly. The maximum +#. length is 28 characters. +#: src/move.c:1106 +#, c-format +msgctxt "label" +msgid "Amount paid per share: " +msgstr "Beløb betalt per aktie: " + +#. TRANSLATORS: "Old share value" refers to the +#. share price of a company before it was forced +#. into bankruptcy by the Bank. This label must be +#. the same width as "Amount paid per share". +#: src/move.c:1114 +#, c-format +msgctxt "label" +msgid "Old share value: " +msgstr "Gammel aktieværdi: " + +#: src/move.c:1197 src/move.c:1232 src/exch.c:321 +#, c-format +msgid " Interstellar Trading Bank " +msgstr " Den Interstellare Handelsbank " + +#: src/move.c:1199 +#, c-format +msgid "" +"You were forced to borrow %N\n" +"to cover losses from company shares." +msgstr "" +"Du blev tvunget til at låne %N\n" +"for at dække tabene fra dine firmaaktier." + +#: src/move.c:1234 +#, c-format +msgid "" +"Your debt has amounted to %N!\n" +"^{The Bank has impounded ^}%N^{ from your cash.^}" +msgstr "" +"Din gæld er opgjort til %N!\n" +"^{Banken har reserveret ^}%N^{ fra din kontantbeholdning.^}" + +#: src/exch.c:98 +#, c-format +msgid " Interstellar Stock Exchange " +msgstr " Den Interstellare Aktiebørs " + +#. TRANSLATORS: "Shares left" is a two-line column +#. label in a table containing the number of shares +#. left to be purchased in any given company. The +#. maximum column width is 10 characters (see +#. STOCK_LEFT_COLS in src/intf.h). +#: src/exch.c:127 +#, c-format +msgctxt "subtitle" +msgid "" +"Shares\n" +"left" +msgstr "" +"Aktier\n" +"tilbage" + +#. TRANSLATORS: "Shares issued" is a two-line column +#. label in a table containing the number of shares +#. already sold (ie, bought by all players) in any +#. given company. The maximum column width is 10 +#. characters (see STOCK_ISSUED_COLS in src/intf.h). +#: src/exch.c:134 +#, c-format +msgctxt "subtitle" +msgid "" +"Shares\n" +"issued" +msgstr "" +"Aktier\n" +"udstedt" + +#. TRANSLATORS: Each label may be up to 37 characters wide +#. (for <1> and <2>) or 38 characters wide (for <3> and <4>). +#: src/exch.c:186 +#, c-format +msgid "^{<2>^} Display galaxy map" +msgstr "^{<2>^} Vis galaksekort" + +#: src/exch.c:188 +#, c-format +msgid "^{<3>^} Visit the Trading Bank" +msgstr "^{<3>^} Besøg Handelsbanken" + +#: src/exch.c:190 +#, c-format +msgid "^{<4>^} Exit the Stock Exchange" +msgstr "^{<4>^} Forlad aktiebørsen" + +#: src/exch.c:193 +#, c-format +msgid "Enter selection [^[Company letter^]/^{1^}-^{4^}]: " +msgstr "Indtast valg [^[Firmabogstav^]/^{1^}-^{4^}]: " + +#. TRANSLATORS: The "Total value", "Current cash", "Current +#. debt", "Interest rate" and "Credit limit" labels MUST all be +#. the same length (ie, right-padded with spaces as needed) and +#. must have at least one trailing space so that the display +#. routines work correctly. The maximum length of each label +#. is 36 characters. +#. +#. Note that some of these labels are used for both the Player +#. Status window and the Trading Bank window. +#: src/exch.c:351 +#, c-format +msgctxt "label" +msgid "Credit limit: " +msgstr "Kreditbegr.: " + +#. TRANSLATORS: The "Borrow money", "Repay debt" and "Exit +#. from the Bank" menu options must all be the same length +#. (ie, padded with trailing spaces as required). The maximum +#. length is 72 characters. +#: src/exch.c:366 +#, c-format +msgid "^{<1>^} Borrow money " +msgstr "^{<1>^} Lån penge " + +#: src/exch.c:368 +#, c-format +msgid "^{<2>^} Repay debt " +msgstr "^{<2>^} Tilbagebetal gæld" + +#: src/exch.c:370 +#, c-format +msgid "^{<3>^} Exit from the Bank" +msgstr "^{<3>^} Forlad banken " + +#: src/exch.c:373 +#, c-format +msgid "Enter selection [^{1^}-^{3^}]: " +msgstr "Indtast valg [^{1^}-^{3^}]: " + +#: src/exch.c:426 +#, c-format +msgid " Insufficient Credit Limit " +msgstr " Kreditten er ikke tilstrækkelig " + +#: src/exch.c:427 +#, c-format +msgid "The Bank will not lend you any more money." +msgstr "Banken vil ikke lade dig låne flere penge." + +#: src/exch.c:447 +#, c-format +msgid "How much do you wish to borrow? " +msgstr "Hvor meget ønsker du at låne? " + +#: src/exch.c:479 +#, c-format +msgid " No Debt " +msgstr " Ingen gæld " + +#: src/exch.c:480 +#, c-format +msgid "You have no debt to repay." +msgstr "Du har ingen gæld at tilbagebetale." + +#: src/exch.c:484 +#, c-format +msgid " No Cash " +msgstr " Ingen kontanter " + +#: src/exch.c:485 +#, c-format +msgid "You have no cash with which to repay the debt!" +msgstr "Du har ingen kontanter til at tilbagebetale gælden!" + +#: src/exch.c:505 +#, c-format +msgid "How much do you wish to repay? " +msgstr "Hvor meget ønsker du at betale tilbage? " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:581 +#, c-format +msgid " Stock Transaction in %ls " +msgstr " Aktietransaktion i %ls " + +#. TRANSLATORS: "Shares issued" represents the number of +#. shares already sold by the company to all players. +#. +#. Note that the labels "Shares issued", "Shares left", +#. "Price per share" and "Return" must all be the same length +#. and must have at least one trailing space for the output +#. routines to work correctly. The maximum length of each +#. label is 22 characters. +#: src/exch.c:592 +#, c-format +msgctxt "label|Stock A" +msgid "Shares issued: " +msgstr "Udstedte aktier: " + +#. TRANSLATORS: "Shares left" is the number of shares that are +#. left to be purchased in the current company. +#: src/exch.c:600 +#, c-format +msgctxt "label|Stock A" +msgid "Shares left: " +msgstr "Tilbagev. aktier: " + +#. TRANSLATORS: "Price per share" is the cost of each share in +#. the current company. +#: src/exch.c:607 +#, c-format +msgctxt "label|Stock A" +msgid "Price per share: " +msgstr "Pris per aktie: " + +#. TRANSLATORS: "Return" is the share return as a percentage. +#: src/exch.c:613 +#, c-format +msgctxt "label|Stock A" +msgid "Return: " +msgstr "Forrentning: " + +#. TRANSLATORS: "Current holdings" is the number of shares the +#. current player owns in this particular company. +#. +#. Note that the labels "Current holdings", "Percentage owned" +#. and "Current cash" MUST all be the same length and contain at +#. least one trailing space for the display routines to work +#. correctly. The maximum length of each label is 18 +#. characters. +#: src/exch.c:626 +#, c-format +msgctxt "label|Stock B" +msgid "Current holdings: " +msgstr "Aktuel beholdning:" + +#. TRANSLATORS: "Percentage owned" is the current player's +#. percentage ownership in this particular company. +#: src/exch.c:633 +#, c-format +msgctxt "label|Stock B" +msgid "Percentage owned: " +msgstr "Procent ejet: " + +#: src/exch.c:638 +#, c-format +msgctxt "label|Stock B" +msgid "Current cash: " +msgstr "Kontanter: " + +#. TRANSLATORS: Each label may be up to 35 characters wide +#. (for <1> and <2>) or 36 characters wide (for <3> and <4>). +#: src/exch.c:651 +#, c-format +msgid "^{<1>^} Buy stock from company" +msgstr "^{<1>^} Køb aktie fra firma" + +#: src/exch.c:653 +#, c-format +msgid "^{<2>^} Sell stock back to company" +msgstr "^{<2>^} Sælg aktie tilbage fra firma" + +#: src/exch.c:655 +#, c-format +msgid "^{<3>^} Bid company to issue more shares" +msgstr "^{<3>^} Anmod firma om at udstede flere aktier" + +#: src/exch.c:657 +#, c-format +msgid "^{<4>^} Exit to the Stock Exchange" +msgstr "^{<4>^} Forlad og gå til aktiebørsen" + +#: src/exch.c:660 +#, c-format +msgid "Enter selection [^{1^}-^{4^}]: " +msgstr "Indtast valg [^{1^}-^{4^}]: " + +#: src/exch.c:716 +#, c-format +msgid " No Shares Available " +msgstr " Ingen aktier tilgængelige " + +#: src/exch.c:717 +#, c-format +msgid "No more shares are available for purchase." +msgstr "Der er ikke yderligere aktier tilgængelige for køb." + +#: src/exch.c:721 +#, c-format +msgid " Insufficient Cash " +msgstr " Ikke nok kontanter " + +#: src/exch.c:722 +#, c-format +msgid "" +"You do not have enough cash\n" +"to purchase additional shares." +msgstr "" +"Du har ikke nok kontanter\n" +"til yderligere aktiekøb." + +#: src/exch.c:733 +#, c-format +msgid "You can purchase ^{one^} share." +msgid_plural "You can purchase up to ^{%'ld^} shares." +msgstr[0] "Du kan købe ^{en^} share." +msgstr[1] "Du kan købe op til ^{%'ld^} aktier." + +#: src/exch.c:739 +#, c-format +msgid "How many shares do you wish to purchase? " +msgstr "Hvor mange aktier ønsker du at købe? " + +#: src/exch.c:760 +#, c-format +msgid " No Shares " +msgstr " Ingen aktier " + +#: src/exch.c:761 +#, c-format +msgid "You do not have any shares to sell." +msgstr "Du har ingen aktier at sælge." + +#: src/exch.c:768 +#, c-format +msgid "You can sell ^{one^} share." +msgid_plural "You can sell up to ^{%'ld^} shares." +msgstr[0] "Du kan sælge ^{en^} aktie." +msgstr[1] "Du kan sælge op til ^{%'ld^} aktier." + +#: src/exch.c:774 +#, c-format +msgid "How many shares do you wish to sell? " +msgstr "Hvor mange aktier ønsker du at sælge? " + +#: src/exch.c:802 +#, c-format +msgid " No Shares Issued " +msgstr " Ingen aktier udstedt " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:804 +#, c-format +msgid "" +"%ls has refused\n" +"to issue more shares." +msgstr "" +"%ls har nægtet\n" +"at udstede flere aktier." + +#: src/exch.c:809 +#, c-format +msgid " Shares Issued " +msgstr " Aktier udstedt " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:811 +#, c-format +msgid "" +"%ls has issued\n" +"^{one^} more share." +msgid_plural "" +"%ls has issued\n" +"^{%'ld^} more shares." +msgstr[0] "" +"%ls har udstedt\n" +"^{en^} yderligere aktie." +msgstr[1] "" +"%ls har udstedt\n" +"^{%'ld^} yderligere aktier." + +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 +#, c-format +msgid "%s: missing field on line %d" +msgstr "%s: manglende felt på linje %d" + +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 +#, c-format +msgid "%s: illegal field on line %d" +msgstr "%s: ugyldigt felt på linje %d" + +#: src/fileio.c:51 +#, c-format +msgid "%s: illegal field on line %d: `%s'" +msgstr "%s: ugyldigt felt på linje %d: »%s«" + +#: src/fileio.c:55 +#, c-format +msgid "%s: illegal value on line %d: `%s'" +msgstr "%s: ugyldigt felt på linje %d: »%s«" + +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 +#, c-format +msgid "%s: illegal value on line %d" +msgstr "%s: ugyldig værdi på linje %d" + +#: src/fileio.c:98 +#, c-format +msgid "%s: illegal characters on line %d" +msgstr "%s: ugyldige tegn på linje %d" + +#: src/fileio.c:183 +#, c-format +msgid "%s: could not convert string" +msgstr "%s: kunne ikke konvertere streng" + +#: src/fileio.c:257 +#, c-format +msgid " Game Not Found " +msgstr " Spil blev ikke fundet " + +#: src/fileio.c:258 +#, c-format +msgid "Game %d has not been saved to disk." +msgstr "Spillet %d er ikke blevet gemt til harddisken." + +#: src/fileio.c:265 +#, c-format +msgid " Game Not Loaded " +msgstr " Spil blev ikke indlæst " + +#: src/fileio.c:266 +#, c-format +msgid "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"Spillet %d kunne ikke indlæses fra harddisken.\n" +"\n" +"^{Fil %s: %s^}" + +#: src/fileio.c:319 +#, c-format +msgid "%s: missing header in game file" +msgstr "%s: mangler hoved i spilfil" + +#: src/fileio.c:322 +#, c-format +msgid "%s: not a valid game file" +msgstr "%s: ikke en gyldig spilfil" + +#: src/fileio.c:325 src/fileio.c:332 +#, c-format +msgid "%s: missing subheader in game file" +msgstr "%s: mangler underhoved i spilfil" + +#: src/fileio.c:328 +#, c-format +msgid "%s: saved under a different version of Star Traders" +msgstr "%s: gemt under en anden version af Star Traders" + +#: src/fileio.c:335 +#, c-format +msgid "%s: saved under an incompatible character encoding" +msgstr "%s: gemt med en tegnkodning der ikke er kompatibel" + +#: src/fileio.c:343 +#, c-format +msgid "%s: illegal or missing field on line %d" +msgstr "%s: ugyldigt eller manglende felt på linje %d" + +#: src/fileio.c:479 src/fileio.c:501 +#, c-format +msgid " Game Not Saved " +msgstr " Spil blev ikke gemt " + +#: src/fileio.c:480 +#, c-format +msgid "" +"Game %d could not be saved to disk.\n" +"\n" +"^{Directory %s: %s^}" +msgstr "" +"Spillet %d kunne ikke gemmes til harddisken.\n" +"\n" +"^{Mappe %s: %s^}" + +#: src/fileio.c:502 +#, c-format +msgid "" +"Game %d could not be saved to disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"Spillet %d kunne ikke gemmes til harddisken.\n" +"\n" +"^{Fil %s: %s^}" + +#. TRANSLATORS: The help text for Star Traders is marked up using a +#. custom mark-up format NOT used anywhere else in the source code. +#. +#. Each string is a single page of text that is displayed in an area 76 +#. columns wide by 16 lines high. Each line is delimited by "\n". NO +#. word-wrapping is performed: you must place the "\n" characters in the +#. appropriate place. Ideally, each line within the string should be +#. also (manually) space-justified or centred. TAB characters and other +#. control codes must NOT be used. If a string starts with "@" as the +#. very first character, that string is ignored (as are all strings +#. following): this allows a variable number of help text pages (from +#. one to ten). Multibyte strings are handled correctly (even those +#. requiring shift sequences!). +#. +#. The ASCII circumflex accent character "^" switches to a different +#. character rendition (also called attributes), depending on the +#. character following the "^": +#. +#. ^^ - Print the circumflex accent (ASCII code U+005E) +#. ^N - Switch to using the normal character rendition +#. ^B - Switch to using the bold character rendition +#. ^H - Switch to using the highlight character rendition +#. ^K - Switch to using the keycode character rendition (such as used for "") +#. ^e - Switch to using the character rendition used for empty space +#. ^o - Switch to using the character rendition used for outposts +#. ^s - Switch to using the character rendition used for stars +#. ^c - Switch to using the character rendition used for companies +#. ^k - Switch to using the character rendition used for keyboard choices on the galaxy map +#. +#. The help text parsing routines also understand the following "value +#. escapes" introduced by the ASCII tilde character "~"; these act like +#. "%" conversion specifiers in printf(): +#. +#. ~~ - Print the tilde character (ASCII code U+007E) [*] +#. ~x - Print the width of the galaxy map (MAX_X) [**] +#. ~y - Print the height of the galaxy map (MAX_Y) [**] +#. ~m - Print the number of moves available (NUMBER_MOVES) [**] +#. ~c - Print the maximum number of companies that can be formed (MAX_COMPANIES) [*] +#. ~t - Prints the default number of turns in the game (DEFAULT_MAX_TURN) [**] +#. ~1 to ~9 - Print the keycode for the N-th choice of move [***] +#. ~M - Print the keycode for the last choice of move [***] +#. ~A to ~H - Print the character used to represent the company on the galaxy map [***] +#. ~. - Print the character used to represent empty space on the map [***] +#. ~+ - Print the character used to represent outposts on the map [***] +#. ~* - Print the character used to represent stars on the map [***] +#. +#. [*] Takes one character space (column space) in the output +#. [**] Takes two column spaces in the output +#. [***] Takes one or two column spaces in the output, depending on the +#. appropriate strings in the current PO file. +#. +#. Note that all keycodes and map representation characters use locale- +#. specific characters; double-width characters ARE supported. Note +#. also that the tilde value escapes do NOT change the current character +#. rendition: a circumflex accent escape is needed for that. For +#. example, to display the first choice of move as it would be shown on +#. the galaxy map, use something like "^k~1^N" (a six-character sequence +#. that would translate to just one character (or maybe two) in the +#. output text). +#. +#. Formatting the help text is probably the most complicated and tedious +#. part of translating Star Traders. The author and maintainer of this +#. game is more than happy to help you with this task: if you are able +#. to provide a translation, even if it is not formatted correctly, the +#. maintainer will perform the necessary adjustments for word-wrapping +#. and justification. In addition, remember that you have up to 10 +#. pages in which to display your help text: the translation does not +#. need to correspond exactly to the original text. This text will not +#. be changing any time soon! +#. +#: src/help.c:113 +msgid "" +"^BStar Traders^N is a simple game of interstellar trading. The object of the\n" +"game is to amass the greatest amount of wealth possible. This is done by\n" +"creating interstellar shipping lanes, expanding them and buying shares in\n" +"the companies controlling them. Shares appreciate in value as company\n" +"operations expand. In addition, the return on each share (as a percentage)\n" +"also changes. Players may also borrow from the Interstellar Trading Bank to\n" +"finance additional purchases on the Stock Exchange.\n" +"\n" +"The map of the galaxy is represented by a ^B~x^N x ^B~y^N grid. A typical section\n" +"of it may be:\n" +"\n" +" ^e ~. ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ~. ~. ^N ^e ~. ^N represents ^Bempty space^N,\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ~. ~. ~. ^N ^s ~* ^N represents a ^Bstar^N.\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +msgstr "" +"^BStar Traders^N er et simpelt spil med rumhandel. Formålet i spillet er at\n" +"samle den størst mulige mængde af rigdom. Dette gøres ved at oprette inter-\n" +"stellare handelsruter, udvide dem og købe aktier i firmaerne der kontrolle-\n" +"rer dem. Aktier stiger i værdi efterhånden som firmaets handel udvides.\n" +"Derudover ændres aktiernes udbytte (som en procent) sig også. Spillere kan\n" +"også låne fra Den Interstellare Handelsbank for at finansiere yderligere køb\n" +"på aktiebørsen.\n" +"\n" +"Galaksens kort er repræsenteret ved et ^B~x^N x ^B~y^N-gitter. Et typisk afsnit kan\n" +"se således ud:\n" +"\n" +" ^e ~. ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ~. ~. ^N ^e ~. ^N repræsent. ^Bempty space^N,\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ~. ~. ~. ^N ^s ~* ^N repræsent. ^Bstar^N.\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" + +#: src/help.c:132 +msgid "" +"The computer selects ^B~m^N moves (labeled ^k~1^N to ^k~M^N) at random, and places these\n" +"on the map. To select any of the highlighted positions, press that letter.\n" +"For example, some of the moves on the map may be:\n" +"\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^k~3^e ~. ~. ~. ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^k~5^e ~. ~. ^N Moves ^k~1^N to ^k~5^N shown.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +"\n" +"\n" +"Selecting a position that is ^Bnot^N next to a star (such as moves ^k~1^N, ^k~3^N or ^k~5^N)\n" +"will set up an ^Boutpost^N, not belonging to any company. Thus, if move ^k~3^N is\n" +"selected on the above map, a ^o ~+ ^N would be placed at that position.\n" +msgstr "" +"Computeren vælger ^B~m^N handlinger (navngivet ^k~1^N til ^k~M^N) vilkårligt, og placerer\n" +"dem på kortet. For at vælge et af de fremhævede placeringer, så tryk på bog-\n" +"stavet. For eksempel kan nogle af handlingerne på kortet være:\n" +"\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^k~3^e ~. ~. ~. ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^k~5^e ~. ~. ^N Flytter ^k~1^N til ^k~5^N vist.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +"\n" +"\n" +"Valg af en position som ^Bikke^N er ved siden af en stjerne (såsom handlingerne\n" +"^k~1^N, ^k~3^N eller ^k~5^N) vil oprette en ^Bforpost^N, der ikke tilhører noget firma. Hvis\n" +"handling 3 vælges på kortet ovenfor vil en ^o ~+ ^N derfor blive placeret på den\n" +"placering.\n" + +#: src/help.c:150 +msgid "" +"If, on the other hand, a position next to a star (or another outpost) is\n" +"selected, a ^Bcompany^N would be formed and its letter would appear on the map.\n" +"As a reward for creating the company, you are granted the first five shares.\n" +"Up to ^B~c^N companies can be created in this way.\n" +"\n" +"If a position next to an existing company is selected, the company would\n" +"expand its operations by one square. This increases the cost of its shares\n" +"and hence your return. Thus, if the map was as shown below, selecting ^k~6^N\n" +"or ^k~8^N increases Company ^B~B^N's shipping lane:\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~6^N or ^k~8^N increases Company ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +msgstr "" +"Hvis på den anden side, en placering ved siden af en stjerne (eller en anden\n" +"forpost) er valgt, så vil et ^Bfirma^N blive dannet og dets bogstav vil frem-\n" +"komme på kortet. Som belønning for at oprette firmaet, modtager du de første\n" +"fem aktier. Op til ^B~c^N firmaer kan oprettes på denne måde.\n" +"\n" +"Hvis en placering ved siden af et eksisterende firma vælges vil firmaet\n" +"udvide sine handlinger med et felt. Dette øger prisen for dets aktier og\n" +"dermed din forrentning. Hvis kortet var vist som nedenfor vil valg af ^k~6^N\n" +"eller ^k~8^N øge firmaet ^B~B^N handelsrute:\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Handling ^k~6^N eller ^k~8^N øger firma ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" + +#: src/help.c:168 +msgid "" +"Selecting positions next to stars increases the value of your stock by about\n" +"five times as much as an extension not next to a star. Thus move ^k~6^N should\n" +"be preferred to move ^k~8^N.\n" +"\n" +" ^e ^c~C^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ^k~1^e ^o~+^e ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~6^N is preferred to ^k~8^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +"\n" +"You may also expand any company by selecting positions next to outposts.\n" +"Such outposts will be swallowed up by that company. Thus, move ^k~1^N will\n" +"extend Company ^B~C^N by ^Btwo^N squares. As a bonus, outposts next to stars are\n" +"more valuable: the company's share price will increase by a greater amount\n" +"than it would for outposts not next to stars.\n" +msgstr "" +"Valg af placeringer ved siden af stjerner øger værdien af din aktie med om-\n" +"kring fem gange så meget som en udvidelse der ligger et andet sted. Valget ^k~6^N\n" +"bør derfor foretrækkes for ^k~8^N.\n" +"\n" +"\n" +" ^e ^c~C^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ^k~1^e ^o~+^e ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Handling ^k~6^N foretrækkes for ^k~8^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +"\n" +"\n" +"Du kan også udvide et firma ved at vælge placeringer ved siden af forposter.\n" +"Sådanne forposter vil blive opslugt af det firma. Handling ^k~1^N vil udvide\n" +"firma ^B~C^N med ^Bto^N felter. Som en bonus er forposter ved stjerner mere værdi-\n" +"fulde: Firmaets aktiepris vil øges mere end forposter placeret andre steder.\n" + +#: src/help.c:186 +msgid "" +"If two companies are separated on the map by only one square, then they can\n" +"be ^Bmerged^N into one company by selecting that position (if available). For\n" +"example, on the map below, companies ^B~A^N and ^B~B^N can be merged by selecting ^k~5^N.\n" +"When this occurs, the company with the greater assets value takes over the\n" +"other one. Here, Company ^B~B^N might take over Company ^B~A^N. Company ^B~A^N ceases to\n" +"exist, although it may reappear as an entirely new company at a later stage.\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^c~A^e ^c~A^e ^k~5^e ^c~B^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ^c~A^e ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~5^N merges companies ^B~A^N and ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ~. ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ^o~+^e ~. ~. ^N\n" +"\n" +"When companies merge, players are granted shares in the dominant company\n" +"proportional to the amount owned in the old company. As well, a cash bonus\n" +"is also paid, proportional to the percentage of the old company owned.\n" +msgstr "" +"Hvis to firmaer er adskilt på kortet af kun et felt, så kan de ^Bfusioneres^N\n" +"til et firma ved at vælge placeringen (hvis tilgængelig). For eksempel, på\n" +"kortet nedenfor, kan firmaerne ^B~A^N og ^B~B^N fusioneres ved at vælge ^k~5^N. Når dette\n" +"sker overtager firmaet med den største værdi det mindre firma. Her kan\n" +"firma ^B~B^N overtage firma ^B~A^N. Firmaet ^B~A^N ophører med at eksistere, selvom det kan\n" +"returnere som et fuldstændig nyt firma på et senere tidspunkt.\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^c~A^e ^c~A^e ^k~5^e ^c~B^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ^c~A^e ~. ^c~B^e ^c~B^e ^c~B^e ^N Handling ^k~5^N fusionerer firmaerne ^B~A^N og ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ~. ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ^o~+^e ~. ~. ^N\n" +"\n" +"Når firmaer fusionerer, får spillerne tildelt aktier i det dominerende firma\n" +"proportionelt med mængden ejet i det gamle firma. Derudover tildeles en kon-\n" +"tantbonus, også proportionel til ejerskabet af det gamle firma.\n" + +#: src/help.c:205 +msgid "" +"Once you select your move, you enter the ^BInterstellar Stock Exchange^N. Here\n" +"you may purchase shares, sell them, borrow from the Trading Bank or repay\n" +"some of your debt (if applicable). Note that each company issues a limited\n" +"number of shares -- you cannot go on buying for ever! You may, however, bid\n" +"for more shares to be issued. You have a better chance of succeeding if you\n" +"own a larger proportion of the company.\n" +"\n" +"The game usually ends after ^B~t^N turns. However, you may end the game sooner\n" +"by pressing ^K^N when asked to select a move. As well, individual\n" +"players can declare themselves bankrupt at any time. If your debt is large\n" +"enough, the Bank may do this for you! If you do not complete your game in\n" +"the time you have available, you may save the game and continue it later.\n" +"\n" +"\n" +"The ^Bwinner of the game^N is the person with the greatest net worth (total\n" +"value of cash, stock and debt). ^HGood luck^N and may the best person win!\n" +msgstr "" +"Når du har valgt din handling, så kommer du til ^BDen Interstellare Aktiebørs^N.\n" +"Her kan du købe aktier, sælge dem, låne fra Handelsbanken eller betale til-\n" +"bage på din gæld (hvis du har gæld). Bemærk at hver firma udsteder et\n" +"begrænset antal aktier — du kan ikke bare købe ind! Du kan dog anmode om, at\n" +"der bliver udstedt flere aktier. Du har en højere sandsynlighed for at få\n" +"succes, hvis du ejer en større andel af firmaet.\n" +"\n" +"\n" +"Spillet slutter normalt efter ^B~t^N runder. Du kan dog afslutte spillet tidli-\n" +"gere ved at trykke på ^K^N, når du bliver bedt om en handling. Indivi-\n" +"duelle spillere kan også erklære sig selv konkurs på ethvert tidspunkt. Hvis\n" +"din gæld er stor nok risikerer du, at din bank gør det for dig! Hvis du ikke\n" +"gør spillet færdig i din tilgængelige tid, kan du gemme spillet og fortsætte\n" +"senere.\n" + +#: src/help.c:225 +msgid "@ Help text, page 7\n" +msgstr "" +"^BVinderen af spillet^N er personen med den største samlede nettoformue (samlet\n" +"værdi for kontanter og aktier minus gæld). ^HHeld og lykke^N og må den bedste\n" +"person vinde!\n" + +#: src/help.c:226 +msgid "@ Help text, page 8\n" +msgstr "@ Hjælpetekst, side 8\n" + +#: src/help.c:227 +msgid "@ Help text, page 9\n" +msgstr "@ Hjælpetekst, side 9\n" + +#: src/help.c:228 +msgid "@ Help text, page 10\n" +msgstr "@ Hjælpetekst, side 10\n" + +#: src/help.c:280 +#, c-format +msgid " How to Play " +msgstr " Sådan spiller du " + +#. TRANSLATORS: The first %d is the current page number, +#. the second is the number of pages your help text takes +#. (6, in English). You can replace the second %d with a +#. fixed word, if you like. +#: src/help.c:286 +#, c-format +msgid "Page %d of %d" +msgstr "Side %d af %d" + +#. TRANSLATORS: The reason the user is not asked "Press any +#. key to continue" is historical: many, many people used to +#. ask "where is the key?" :-) +#: src/help.c:487 src/intf.c:3035 +#, c-format +msgid "[ Press to continue ] " +msgstr "[ Tryk for at fortsætte ] " + +#. TRANSLATORS: The specific use of and +#. is not essential: you can use , +#. , , or instead of +#. , and almost any other key instead of +#. (other than , , , , +#. or <\>). +#: src/help.c:494 +#, c-format +msgid "[ Press to continue or for the previous page ] " +msgstr "[ Tryk for at fortsætte eller for den forrige side ] " + +#: src/intf.c:110 +#, c-format +msgid "%s: string has incorrect format: `%s'" +msgstr "%s: streng har ikke korrekt format: »%s«" + +#: src/intf.c:126 +#, c-format +msgid "%s: character has illegal width: `%lc'" +msgstr "%s: tegn har ugyldig bredde: »%lc«" + +#: src/intf.c:434 +#, c-format +msgid "terminal size is too small (%d x %d required)" +msgstr "terminalstørrelse er for lille (%d x %d krævet)" + +#: src/intf.c:610 +#, c-format +msgid "Star Traders" +msgstr "Star Traders" + +#: src/intf.c:1265 +#, c-format +msgid "mkchstr_conv: NUL" +msgstr "mkchstr_conv: NUL" + +#: src/intf.c:1568 +#, c-format +msgid "mkchstr: `%s'" +msgstr "mkchstr: »%s«" + +#. TRANSLATORS: This string specifies the keycodes used to insert the +#. default value into the input string, if entered as the very first +#. character. Ideally, it should contain an easily-accessible +#. keycode that would NOT be used in ordinary input. Digits, ".", +#. ",", "+" and "-" are definitely NOT acceptable. +#: src/intf.c:2020 +msgctxt "input|DefaultValue" +msgid "=;" +msgstr "=;" + +#: src/intf.c:2034 src/intf.c:2079 +#, c-format +msgid "gettxline: illegal character in string: `%ls'" +msgstr "gettxline: ugyldigt tegn i streng: »%ls«" + +#. TRANSLATORS: The strings with msgctxt "input|Yes" and +#. "input|No" contain the keycodes used to determine whether a +#. user is answering "Yes" or "No" in response to some question. +#. Both upper and lower-case versions should be present. +#: src/intf.c:2952 +msgctxt "input|Yes" +msgid "Yy" +msgstr "Jj" + +#: src/intf.c:2954 +msgctxt "input|No" +msgid "Nn" +msgstr "Nn" + +#. TRANSLATORS: The strings "Yes" and "No" are printed as a +#. response to user input in answer to questions like "Are you +#. sure? [Y/N] " +#: src/intf.c:3005 +msgctxt "answer" +msgid "Yes" +msgstr "Ja" + +#: src/intf.c:3007 +msgctxt "answer" +msgid "No" +msgstr "Nej" + +#: src/utils.c:378 src/utils.c:399 +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/utils.c:404 +msgid ": " +msgstr ": " + +#: src/utils.c:417 +#, c-format +msgid "out of memory" +msgstr "ikke nok hukommelse" + +#: src/utils.c:1041 +#, c-format +msgid "xmbstowcs: `%s'" +msgstr "xmbstowcs: »%s«" + +#: src/utils.c:1081 +#, c-format +msgid "xwcrtomb: NUL" +msgstr "xwcrtomb: NUL" + +#: src/utils.c:1086 +#, c-format +msgid "xwcrtomb: `%lc'" +msgstr "xwcrtomb: »%lc«" + +#: lib/getopt.c:547 lib/getopt.c:576 +#, c-format +msgid "%s: option '%s' is ambiguous; possibilities:" +msgstr "%s: tilvalg »%s« er tvetydigt; muligheder:" + +#: lib/getopt.c:624 lib/getopt.c:628 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: tilvalg »--%s« tillader ikke et argument\n" + +#: lib/getopt.c:637 lib/getopt.c:642 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: tilvalg »%c%s« tillader ikke et argument\n" + +#: lib/getopt.c:685 lib/getopt.c:704 +#, c-format +msgid "%s: option '--%s' requires an argument\n" +msgstr "%s: tilvalg »--%s« kræver et argument\n" + +#: lib/getopt.c:742 lib/getopt.c:745 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: tilvalg blev ikke genkendt »--%s«\n" + +#: lib/getopt.c:753 lib/getopt.c:756 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: tilvalg blev ikke genkendt »%c%s«\n" + +#: lib/getopt.c:805 lib/getopt.c:808 +#, c-format +msgid "%s: invalid option -- '%c'\n" +msgstr "%s: ugyldigt tilvalg -- »%c«\n" + +#: lib/getopt.c:861 lib/getopt.c:878 lib/getopt.c:1088 lib/getopt.c:1106 +#, c-format +msgid "%s: option requires an argument -- '%c'\n" +msgstr "%s: tilvalg kræver et argument -- »%c«\n" + +#: lib/getopt.c:934 lib/getopt.c:950 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: tilvalg »W %s« er tvetydigt\n" + +#: lib/getopt.c:974 lib/getopt.c:992 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: tilvalg »-W %s« tillader ikke et argument\n" + +#: lib/getopt.c:1013 lib/getopt.c:1031 +#, c-format +msgid "%s: option '-W %s' requires an argument\n" +msgstr "%s: tilvalg »-W %s« kræver et argument\n" diff --git a/po/de.po b/po/de.po index 2c66930..7635518 100644 --- a/po/de.po +++ b/po/de.po @@ -1,7 +1,7 @@ # ************************************************************************* # * * # * German Translations for Star Traders * -# * Copyright (C) 2012, John Zaitseff * +# * Copyright (C) 2012-14, John Zaitseff * # * * # ************************************************************************* # @@ -12,10 +12,10 @@ # msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:07+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 10:57+1000\n" "Last-Translator: Philipp Thomas \n" "Language-Team: German \n" "Language: de\n" @@ -1123,52 +1123,57 @@ msgstr[1] "" "%ls hat ^{%'ld^}\n" "weitere Aktien ausgegeben." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: in Zeile %d fehlt ein Feld" -#: src/fileio.c:60 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 +#, c-format +msgid "%s: illegal field on line %d" +msgstr "%s: unzulässiges Feld in Zeile %d" + +#: src/fileio.c:51 #, c-format msgid "%s: illegal field on line %d: `%s'" msgstr "%s: unzulässiges Feld in Zeile %d: „%s“" -#: src/fileio.c:64 +#: src/fileio.c:55 #, c-format msgid "%s: illegal value on line %d: `%s'" msgstr "%s: unzulässiger Wert in Zeile %d: „%s“" -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 #, c-format msgid "%s: illegal value on line %d" msgstr "%s: unzulässiger Wert in Zeile %d" -#: src/fileio.c:103 +#: src/fileio.c:98 #, c-format msgid "%s: illegal characters on line %d" msgstr "%s: unzulässiges Zeichen in Zeile %d" -#: src/fileio.c:184 +#: src/fileio.c:183 #, c-format msgid "%s: could not convert string" msgstr "%s: die Zeichenkette konnte nicht umgewandelt werden" -#: src/fileio.c:255 +#: src/fileio.c:257 #, c-format msgid " Game Not Found " msgstr " Spiel nicht gefunden " -#: src/fileio.c:256 +#: src/fileio.c:258 #, c-format msgid "Game %d has not been saved to disk." msgstr "Spiel %d wurde nicht abgespeichert." -#: src/fileio.c:263 +#: src/fileio.c:265 #, c-format msgid " Game Not Loaded " msgstr " Spiel nicht geladen " -#: src/fileio.c:264 +#: src/fileio.c:266 #, c-format msgid "" "Game %d could not be loaded from disk.\n" @@ -1179,47 +1184,42 @@ msgstr "" "\n" "^{Spiel %s: %s^}" -#: src/fileio.c:316 +#: src/fileio.c:319 #, c-format msgid "%s: missing header in game file" msgstr "%s: Die Spieldatei hat keinen Vorspann" -#: src/fileio.c:319 +#: src/fileio.c:322 #, c-format msgid "%s: not a valid game file" msgstr "%s: ist keine gültige Spieldatei" -#: src/fileio.c:322 src/fileio.c:329 +#: src/fileio.c:325 src/fileio.c:332 #, c-format msgid "%s: missing subheader in game file" msgstr "%s: In der Spieldatei fehlt ein zusätzlicher Vorspann" -#: src/fileio.c:325 +#: src/fileio.c:328 #, c-format msgid "%s: saved under a different version of Star Traders" msgstr "%s: wurde unter einer anderen Version von Star Traders gespeichert" -#: src/fileio.c:332 +#: src/fileio.c:335 #, c-format msgid "%s: saved under an incompatible character encoding" msgstr "%s: unter einer inkompatiblen Zeichenkodierung abgespeichert" -#: src/fileio.c:340 +#: src/fileio.c:343 #, c-format msgid "%s: illegal or missing field on line %d" msgstr "%s: unzulässiges oder fehlendes Feld in Zeile %d" -#: src/fileio.c:384 -#, c-format -msgid "%s: illegal field on line %d" -msgstr "%s: unzulässiges Feld in Zeile %d" - -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Spiel Nicht Gespeichert " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1230,7 +1230,7 @@ msgstr "" "\n" "^{Verzeichnis %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1644,31 +1644,31 @@ msgctxt "answer" msgid "No" msgstr "Nein" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "Kein frier Speicer mehr vorhanden" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: „%s“" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: „%lc“" diff --git a/po/en_AU.po b/po/en_AU.po index 3a9d14d..2244512 100644 --- a/po/en_AU.po +++ b/po/en_AU.po @@ -1,21 +1,21 @@ # ************************************************************************* # * * # * English (Australian) Translations for Star Traders * -# * Copyright (C) 1990-2012, John Zaitseff * +# * Copyright (C) 1990-2014, John Zaitseff * # * * # ************************************************************************* # # This file is distributed under the same licence as Star Traders. # # Contributors: -# John Zaitseff , 2011-12. +# John Zaitseff , 2011-14. # msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:07+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 10:57+1000\n" "Last-Translator: John Zaitseff \n" "Language-Team: English (Australian)\n" "Language: en_AU\n" @@ -1110,103 +1110,103 @@ msgstr[1] "" "%ls has issued\n" "^{%'ld^} more shares." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: missing field on line %d" -#: src/fileio.c:60 -#, c-format -msgid "%s: illegal field on line %d: `%s'" -msgstr "%s: illegal field on line %d: ‘%s’" - -#: src/fileio.c:64 -#, c-format -msgid "%s: illegal value on line %d: `%s'" -msgstr "%s: illegal value on line %d: ‘%s’" - -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 -#, c-format -msgid "%s: illegal value on line %d" -msgstr "%s: illegal value on line %d" - -#: src/fileio.c:103 -#, c-format -msgid "%s: illegal characters on line %d" -msgstr "%s: illegal characters on line %d" - -#: src/fileio.c:184 -#, c-format -msgid "%s: could not convert string" -msgstr "%s: could not convert string" - -#: src/fileio.c:255 -#, c-format -msgid " Game Not Found " -msgstr " Game Not Found " - -#: src/fileio.c:256 -#, c-format -msgid "Game %d has not been saved to disk." -msgstr "Game %d has not been saved to disk." - -#: src/fileio.c:263 -#, c-format -msgid " Game Not Loaded " -msgstr " Game Not Loaded " - -#: src/fileio.c:264 -#, c-format -msgid "" -"Game %d could not be loaded from disk.\n" -"\n" -"^{File %s: %s^}" -msgstr "" -"Game %d could not be loaded from disk.\n" -"\n" -"^{File %s: %s^}" - -#: src/fileio.c:316 -#, c-format -msgid "%s: missing header in game file" -msgstr "%s: missing header in game file" - -#: src/fileio.c:319 -#, c-format -msgid "%s: not a valid game file" -msgstr "%s: not a valid game file" - -#: src/fileio.c:322 src/fileio.c:329 -#, c-format -msgid "%s: missing subheader in game file" -msgstr "%s: missing subheader in game file" - -#: src/fileio.c:325 -#, c-format -msgid "%s: saved under a different version of Star Traders" -msgstr "%s: saved under a different version of Star Traders" - -#: src/fileio.c:332 -#, c-format -msgid "%s: saved under an incompatible character encoding" -msgstr "%s: saved under an incompatible character encoding" - -#: src/fileio.c:340 -#, c-format -msgid "%s: illegal or missing field on line %d" -msgstr "%s: illegal or missing field on line %d" - -#: src/fileio.c:384 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 #, c-format msgid "%s: illegal field on line %d" msgstr "%s: illegal field on line %d" -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:51 +#, c-format +msgid "%s: illegal field on line %d: `%s'" +msgstr "%s: illegal field on line %d: ‘%s’" + +#: src/fileio.c:55 +#, c-format +msgid "%s: illegal value on line %d: `%s'" +msgstr "%s: illegal value on line %d: ‘%s’" + +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 +#, c-format +msgid "%s: illegal value on line %d" +msgstr "%s: illegal value on line %d" + +#: src/fileio.c:98 +#, c-format +msgid "%s: illegal characters on line %d" +msgstr "%s: illegal characters on line %d" + +#: src/fileio.c:183 +#, c-format +msgid "%s: could not convert string" +msgstr "%s: could not convert string" + +#: src/fileio.c:257 +#, c-format +msgid " Game Not Found " +msgstr " Game Not Found " + +#: src/fileio.c:258 +#, c-format +msgid "Game %d has not been saved to disk." +msgstr "Game %d has not been saved to disk." + +#: src/fileio.c:265 +#, c-format +msgid " Game Not Loaded " +msgstr " Game Not Loaded " + +#: src/fileio.c:266 +#, c-format +msgid "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" + +#: src/fileio.c:319 +#, c-format +msgid "%s: missing header in game file" +msgstr "%s: missing header in game file" + +#: src/fileio.c:322 +#, c-format +msgid "%s: not a valid game file" +msgstr "%s: not a valid game file" + +#: src/fileio.c:325 src/fileio.c:332 +#, c-format +msgid "%s: missing subheader in game file" +msgstr "%s: missing subheader in game file" + +#: src/fileio.c:328 +#, c-format +msgid "%s: saved under a different version of Star Traders" +msgstr "%s: saved under a different version of Star Traders" + +#: src/fileio.c:335 +#, c-format +msgid "%s: saved under an incompatible character encoding" +msgstr "%s: saved under an incompatible character encoding" + +#: src/fileio.c:343 +#, c-format +msgid "%s: illegal or missing field on line %d" +msgstr "%s: illegal or missing field on line %d" + +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Game Not Saved " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1217,7 +1217,7 @@ msgstr "" "\n" "^{Directory %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1629,31 +1629,31 @@ msgctxt "answer" msgid "No" msgstr "No" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "out of memory" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: ‘%s’" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: ‘%lc’" diff --git a/po/en_CA.po b/po/en_CA.po index aab9bd8..42a1022 100644 --- a/po/en_CA.po +++ b/po/en_CA.po @@ -1,21 +1,21 @@ # ************************************************************************* # * * # * English (Canadian) Translations for Star Traders * -# * Copyright (C) 1990-2012, John Zaitseff * +# * Copyright (C) 1990-2014, John Zaitseff * # * * # ************************************************************************* # # This file is distributed under the same licence as Star Traders. # # Contributors: -# John Zaitseff , 2011-12. +# John Zaitseff , 2011-14. # msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:07+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 10:58+1000\n" "Last-Translator: John Zaitseff \n" "Language-Team: English (Canadian)\n" "Language: en_CA\n" @@ -1110,103 +1110,103 @@ msgstr[1] "" "%ls has issued\n" "^{%'ld^} more shares." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: missing field on line %d" -#: src/fileio.c:60 -#, c-format -msgid "%s: illegal field on line %d: `%s'" -msgstr "%s: illegal field on line %d: ‘%s’" - -#: src/fileio.c:64 -#, c-format -msgid "%s: illegal value on line %d: `%s'" -msgstr "%s: illegal value on line %d: ‘%s’" - -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 -#, c-format -msgid "%s: illegal value on line %d" -msgstr "%s: illegal value on line %d" - -#: src/fileio.c:103 -#, c-format -msgid "%s: illegal characters on line %d" -msgstr "%s: illegal characters on line %d" - -#: src/fileio.c:184 -#, c-format -msgid "%s: could not convert string" -msgstr "%s: could not convert string" - -#: src/fileio.c:255 -#, c-format -msgid " Game Not Found " -msgstr " Game Not Found " - -#: src/fileio.c:256 -#, c-format -msgid "Game %d has not been saved to disk." -msgstr "Game %d has not been saved to disk." - -#: src/fileio.c:263 -#, c-format -msgid " Game Not Loaded " -msgstr " Game Not Loaded " - -#: src/fileio.c:264 -#, c-format -msgid "" -"Game %d could not be loaded from disk.\n" -"\n" -"^{File %s: %s^}" -msgstr "" -"Game %d could not be loaded from disk.\n" -"\n" -"^{File %s: %s^}" - -#: src/fileio.c:316 -#, c-format -msgid "%s: missing header in game file" -msgstr "%s: missing header in game file" - -#: src/fileio.c:319 -#, c-format -msgid "%s: not a valid game file" -msgstr "%s: not a valid game file" - -#: src/fileio.c:322 src/fileio.c:329 -#, c-format -msgid "%s: missing subheader in game file" -msgstr "%s: missing subheader in game file" - -#: src/fileio.c:325 -#, c-format -msgid "%s: saved under a different version of Star Traders" -msgstr "%s: saved under a different version of Star Traders" - -#: src/fileio.c:332 -#, c-format -msgid "%s: saved under an incompatible character encoding" -msgstr "%s: saved under an incompatible character encoding" - -#: src/fileio.c:340 -#, c-format -msgid "%s: illegal or missing field on line %d" -msgstr "%s: illegal or missing field on line %d" - -#: src/fileio.c:384 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 #, c-format msgid "%s: illegal field on line %d" msgstr "%s: illegal field on line %d" -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:51 +#, c-format +msgid "%s: illegal field on line %d: `%s'" +msgstr "%s: illegal field on line %d: ‘%s’" + +#: src/fileio.c:55 +#, c-format +msgid "%s: illegal value on line %d: `%s'" +msgstr "%s: illegal value on line %d: ‘%s’" + +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 +#, c-format +msgid "%s: illegal value on line %d" +msgstr "%s: illegal value on line %d" + +#: src/fileio.c:98 +#, c-format +msgid "%s: illegal characters on line %d" +msgstr "%s: illegal characters on line %d" + +#: src/fileio.c:183 +#, c-format +msgid "%s: could not convert string" +msgstr "%s: could not convert string" + +#: src/fileio.c:257 +#, c-format +msgid " Game Not Found " +msgstr " Game Not Found " + +#: src/fileio.c:258 +#, c-format +msgid "Game %d has not been saved to disk." +msgstr "Game %d has not been saved to disk." + +#: src/fileio.c:265 +#, c-format +msgid " Game Not Loaded " +msgstr " Game Not Loaded " + +#: src/fileio.c:266 +#, c-format +msgid "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" + +#: src/fileio.c:319 +#, c-format +msgid "%s: missing header in game file" +msgstr "%s: missing header in game file" + +#: src/fileio.c:322 +#, c-format +msgid "%s: not a valid game file" +msgstr "%s: not a valid game file" + +#: src/fileio.c:325 src/fileio.c:332 +#, c-format +msgid "%s: missing subheader in game file" +msgstr "%s: missing subheader in game file" + +#: src/fileio.c:328 +#, c-format +msgid "%s: saved under a different version of Star Traders" +msgstr "%s: saved under a different version of Star Traders" + +#: src/fileio.c:335 +#, c-format +msgid "%s: saved under an incompatible character encoding" +msgstr "%s: saved under an incompatible character encoding" + +#: src/fileio.c:343 +#, c-format +msgid "%s: illegal or missing field on line %d" +msgstr "%s: illegal or missing field on line %d" + +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Game Not Saved " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1217,7 +1217,7 @@ msgstr "" "\n" "^{Directory %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1629,31 +1629,31 @@ msgctxt "answer" msgid "No" msgstr "No" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "out of memory" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: ‘%s’" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: ‘%lc’" diff --git a/po/en_GB.po b/po/en_GB.po index 41951a8..c97cc8e 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -1,21 +1,21 @@ # ************************************************************************* # * * # * English (British) Translations for Star Traders * -# * Copyright (C) 1990-2012, John Zaitseff * +# * Copyright (C) 1990-2014, John Zaitseff * # * * # ************************************************************************* # # This file is distributed under the same licence as Star Traders. # # Contributors: -# John Zaitseff , 2011-12. +# John Zaitseff , 2011-14. # msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:06+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 10:58+1000\n" "Last-Translator: John Zaitseff \n" "Language-Team: English (British)\n" "Language: en_GB\n" @@ -1110,103 +1110,103 @@ msgstr[1] "" "%ls has issued\n" "^{%'ld^} more shares." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: missing field on line %d" -#: src/fileio.c:60 -#, c-format -msgid "%s: illegal field on line %d: `%s'" -msgstr "%s: illegal field on line %d: ‘%s’" - -#: src/fileio.c:64 -#, c-format -msgid "%s: illegal value on line %d: `%s'" -msgstr "%s: illegal value on line %d: ‘%s’" - -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 -#, c-format -msgid "%s: illegal value on line %d" -msgstr "%s: illegal value on line %d" - -#: src/fileio.c:103 -#, c-format -msgid "%s: illegal characters on line %d" -msgstr "%s: illegal characters on line %d" - -#: src/fileio.c:184 -#, c-format -msgid "%s: could not convert string" -msgstr "%s: could not convert string" - -#: src/fileio.c:255 -#, c-format -msgid " Game Not Found " -msgstr " Game Not Found " - -#: src/fileio.c:256 -#, c-format -msgid "Game %d has not been saved to disk." -msgstr "Game %d has not been saved to disk." - -#: src/fileio.c:263 -#, c-format -msgid " Game Not Loaded " -msgstr " Game Not Loaded " - -#: src/fileio.c:264 -#, c-format -msgid "" -"Game %d could not be loaded from disk.\n" -"\n" -"^{File %s: %s^}" -msgstr "" -"Game %d could not be loaded from disk.\n" -"\n" -"^{File %s: %s^}" - -#: src/fileio.c:316 -#, c-format -msgid "%s: missing header in game file" -msgstr "%s: missing header in game file" - -#: src/fileio.c:319 -#, c-format -msgid "%s: not a valid game file" -msgstr "%s: not a valid game file" - -#: src/fileio.c:322 src/fileio.c:329 -#, c-format -msgid "%s: missing subheader in game file" -msgstr "%s: missing subheader in game file" - -#: src/fileio.c:325 -#, c-format -msgid "%s: saved under a different version of Star Traders" -msgstr "%s: saved under a different version of Star Traders" - -#: src/fileio.c:332 -#, c-format -msgid "%s: saved under an incompatible character encoding" -msgstr "%s: saved under an incompatible character encoding" - -#: src/fileio.c:340 -#, c-format -msgid "%s: illegal or missing field on line %d" -msgstr "%s: illegal or missing field on line %d" - -#: src/fileio.c:384 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 #, c-format msgid "%s: illegal field on line %d" msgstr "%s: illegal field on line %d" -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:51 +#, c-format +msgid "%s: illegal field on line %d: `%s'" +msgstr "%s: illegal field on line %d: ‘%s’" + +#: src/fileio.c:55 +#, c-format +msgid "%s: illegal value on line %d: `%s'" +msgstr "%s: illegal value on line %d: ‘%s’" + +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 +#, c-format +msgid "%s: illegal value on line %d" +msgstr "%s: illegal value on line %d" + +#: src/fileio.c:98 +#, c-format +msgid "%s: illegal characters on line %d" +msgstr "%s: illegal characters on line %d" + +#: src/fileio.c:183 +#, c-format +msgid "%s: could not convert string" +msgstr "%s: could not convert string" + +#: src/fileio.c:257 +#, c-format +msgid " Game Not Found " +msgstr " Game Not Found " + +#: src/fileio.c:258 +#, c-format +msgid "Game %d has not been saved to disk." +msgstr "Game %d has not been saved to disk." + +#: src/fileio.c:265 +#, c-format +msgid " Game Not Loaded " +msgstr " Game Not Loaded " + +#: src/fileio.c:266 +#, c-format +msgid "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" + +#: src/fileio.c:319 +#, c-format +msgid "%s: missing header in game file" +msgstr "%s: missing header in game file" + +#: src/fileio.c:322 +#, c-format +msgid "%s: not a valid game file" +msgstr "%s: not a valid game file" + +#: src/fileio.c:325 src/fileio.c:332 +#, c-format +msgid "%s: missing subheader in game file" +msgstr "%s: missing subheader in game file" + +#: src/fileio.c:328 +#, c-format +msgid "%s: saved under a different version of Star Traders" +msgstr "%s: saved under a different version of Star Traders" + +#: src/fileio.c:335 +#, c-format +msgid "%s: saved under an incompatible character encoding" +msgstr "%s: saved under an incompatible character encoding" + +#: src/fileio.c:343 +#, c-format +msgid "%s: illegal or missing field on line %d" +msgstr "%s: illegal or missing field on line %d" + +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Game Not Saved " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1217,7 +1217,7 @@ msgstr "" "\n" "^{Directory %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1629,31 +1629,31 @@ msgctxt "answer" msgid "No" msgstr "No" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "out of memory" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: ‘%s’" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: ‘%lc’" diff --git a/po/en_US.po b/po/en_US.po index afbd064..7f3f523 100644 --- a/po/en_US.po +++ b/po/en_US.po @@ -1,21 +1,21 @@ # ************************************************************************* # * * # * English (US) Translations for Star Traders * -# * Copyright (C) 1990-2012, John Zaitseff * +# * Copyright (C) 1990-2014, John Zaitseff * # * * # ************************************************************************* # # This file is distributed under the same licence as Star Traders. # # Contributors: -# John Zaitseff , 2011-12. +# John Zaitseff , 2011-14. # msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:06+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 10:58+1000\n" "Last-Translator: John Zaitseff \n" "Language-Team: English\n" "Language: en_US\n" @@ -1110,103 +1110,103 @@ msgstr[1] "" "%ls has issued\n" "^{%'ld^} more shares." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: missing field on line %d" -#: src/fileio.c:60 -#, c-format -msgid "%s: illegal field on line %d: `%s'" -msgstr "%s: illegal field on line %d: ‘%s’" - -#: src/fileio.c:64 -#, c-format -msgid "%s: illegal value on line %d: `%s'" -msgstr "%s: illegal value on line %d: ‘%s’" - -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 -#, c-format -msgid "%s: illegal value on line %d" -msgstr "%s: illegal value on line %d" - -#: src/fileio.c:103 -#, c-format -msgid "%s: illegal characters on line %d" -msgstr "%s: illegal characters on line %d" - -#: src/fileio.c:184 -#, c-format -msgid "%s: could not convert string" -msgstr "%s: could not convert string" - -#: src/fileio.c:255 -#, c-format -msgid " Game Not Found " -msgstr " Game Not Found " - -#: src/fileio.c:256 -#, c-format -msgid "Game %d has not been saved to disk." -msgstr "Game %d has not been saved to disk." - -#: src/fileio.c:263 -#, c-format -msgid " Game Not Loaded " -msgstr " Game Not Loaded " - -#: src/fileio.c:264 -#, c-format -msgid "" -"Game %d could not be loaded from disk.\n" -"\n" -"^{File %s: %s^}" -msgstr "" -"Game %d could not be loaded from disk.\n" -"\n" -"^{File %s: %s^}" - -#: src/fileio.c:316 -#, c-format -msgid "%s: missing header in game file" -msgstr "%s: missing header in game file" - -#: src/fileio.c:319 -#, c-format -msgid "%s: not a valid game file" -msgstr "%s: not a valid game file" - -#: src/fileio.c:322 src/fileio.c:329 -#, c-format -msgid "%s: missing subheader in game file" -msgstr "%s: missing subheader in game file" - -#: src/fileio.c:325 -#, c-format -msgid "%s: saved under a different version of Star Traders" -msgstr "%s: saved under a different version of Star Traders" - -#: src/fileio.c:332 -#, c-format -msgid "%s: saved under an incompatible character encoding" -msgstr "%s: saved under an incompatible character encoding" - -#: src/fileio.c:340 -#, c-format -msgid "%s: illegal or missing field on line %d" -msgstr "%s: illegal or missing field on line %d" - -#: src/fileio.c:384 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 #, c-format msgid "%s: illegal field on line %d" msgstr "%s: illegal field on line %d" -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:51 +#, c-format +msgid "%s: illegal field on line %d: `%s'" +msgstr "%s: illegal field on line %d: ‘%s’" + +#: src/fileio.c:55 +#, c-format +msgid "%s: illegal value on line %d: `%s'" +msgstr "%s: illegal value on line %d: ‘%s’" + +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 +#, c-format +msgid "%s: illegal value on line %d" +msgstr "%s: illegal value on line %d" + +#: src/fileio.c:98 +#, c-format +msgid "%s: illegal characters on line %d" +msgstr "%s: illegal characters on line %d" + +#: src/fileio.c:183 +#, c-format +msgid "%s: could not convert string" +msgstr "%s: could not convert string" + +#: src/fileio.c:257 +#, c-format +msgid " Game Not Found " +msgstr " Game Not Found " + +#: src/fileio.c:258 +#, c-format +msgid "Game %d has not been saved to disk." +msgstr "Game %d has not been saved to disk." + +#: src/fileio.c:265 +#, c-format +msgid " Game Not Loaded " +msgstr " Game Not Loaded " + +#: src/fileio.c:266 +#, c-format +msgid "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" + +#: src/fileio.c:319 +#, c-format +msgid "%s: missing header in game file" +msgstr "%s: missing header in game file" + +#: src/fileio.c:322 +#, c-format +msgid "%s: not a valid game file" +msgstr "%s: not a valid game file" + +#: src/fileio.c:325 src/fileio.c:332 +#, c-format +msgid "%s: missing subheader in game file" +msgstr "%s: missing subheader in game file" + +#: src/fileio.c:328 +#, c-format +msgid "%s: saved under a different version of Star Traders" +msgstr "%s: saved under a different version of Star Traders" + +#: src/fileio.c:335 +#, c-format +msgid "%s: saved under an incompatible character encoding" +msgstr "%s: saved under an incompatible character encoding" + +#: src/fileio.c:343 +#, c-format +msgid "%s: illegal or missing field on line %d" +msgstr "%s: illegal or missing field on line %d" + +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Game Not Saved " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1217,7 +1217,7 @@ msgstr "" "\n" "^{Directory %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1629,31 +1629,31 @@ msgctxt "answer" msgid "No" msgstr "No" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "out of memory" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: ‘%s’" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: ‘%lc’" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 0000000..2c3fea5 --- /dev/null +++ b/po/eo.po @@ -0,0 +1,1720 @@ +# ************************************************************************* +# * * +# * Esperanto Translations for Star Traders * +# * Copyright (C) 2013-14, John Zaitseff * +# * Copyright (C) 2013, Free Software Foundation, Inc. * +# * * +# ************************************************************************* +# +# This file is distributed under the same license as the trader package. +# +# Contributors: +# Felipe Castro , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: trader 7.5\n" +"Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 10:59+1000\n" +"Last-Translator: Felipe Castro \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: src/trader.c:235 +#, c-format +msgid "%s: invalid value for --max-turn: `%s'\n" +msgstr "%s: malvalida valoro por --max-turn: '%s'\n" + +#: src/trader.c:251 +#, c-format +msgid "%s: invalid operand `%s'\n" +msgstr "%s: malvalida argumento '%s'\n" + +#: src/trader.c:260 +#, c-format +msgid "%s: invalid game number `%s'\n" +msgstr "%s: malvalida seanc-numero '%s'\n" + +#: src/trader.c:269 +#, c-format +msgid "%s: extra operand `%s'\n" +msgstr "%s: troa argumento: '%s'\n" + +#. TRANSLATORS: "John Zaitseff" [IPA d͡ʒɒn ˈzaɪ̯t͡səf] is the proper +#. name of the author. The IPA pronunciation in this comment is in +#. UTF-8 encoding. +#: src/trader.c:284 +#, c-format +msgid "" +"Star Traders (%s) %s\n" +"Copyright (C) %s, John Zaitseff.\n" +"\n" +"Star Traders is a simple game of interstellar trading, where the object\n" +"of the game is to create companies, buy and sell shares, borrow and repay\n" +"money, in order to become the wealthiest player (the winner).\n" +"\n" +"This program is free software that is distributed under the terms of the\n" +"GNU General Public License, version 3 or later. You are welcome to\n" +"modify and/or distribute it under certain conditions. This program has\n" +"NO WARRANTY, to the extent permitted by law; see the License for details.\n" +msgstr "" +"Star Traders (%s) %s\n" +"Kopirajto (C) %s, John Zaitseff.\n" +"\n" +"Star Traders estas simpla ludo pri interstelara komerco, kie la celo de la\n" +"ludo estas krei kompaniojn, aĉeti kaj vendi akciojn, pruntepreni kaj repagi\n" +"monon, por fariĝi la plej riĉa ludanto (la venkanto).\n" +"\n" +"Tiu ĉi programo estas libera programaro, kiu estas disdonata sub la kondiĉoj\n" +"de la GNU-a Ĝenerala Publika Permesilo, versio 3 aŭ posta. Vi estas bonvena\n" +"por modifi kaj/aŭ disdoni ĝin sub kelkaj kondiĉoj. Tiu ĉi programo venas kun\n" +"NENIU GARANTIO, laŭ plejamplekse permesite de la leĝo; konsultu la Permesilon\n" +"por pli da detaloj.\n" + +#: src/trader.c:308 +#, c-format +msgid "%s: Try `%s --help' for more information.\n" +msgstr "%s: Provu '%s --help' por pli da informoj.\n" + +#: src/trader.c:311 +#, c-format +msgid "Usage: %s [OPTION ...] [GAME]\n" +msgstr "Uzmaniero: %s [MODIFILO ...] [SEANCO]\n" + +#: src/trader.c:312 +#, c-format +msgid "" +"Play Star Traders, a simple game of interstellar trading.\n" +"\n" +msgstr "" +"Ludi Star Traders, simpla ludo pri interstelara komerco.\n" +"\n" + +#: src/trader.c:315 +#, c-format +msgid "" +"Options:\n" +" -V, --version output version information and exit\n" +" -h, --help display this help and exit\n" +" --no-color don't use color for displaying text\n" +" --max-turn=NUM set the number of turns to NUM\n" +"\n" +msgstr "" +"Modifiloj:\n" +" -V, --version montri informon pri versio kaj eliri\n" +" -h, --help montri tiun ĉi helpon kaj eliri\n" +" --no-color ne uzi kolorojn por montrigi tekston\n" +" --max-turn=NUM difini la nombron da cikloj kiel NUM\n" +"\n" + +#: src/trader.c:322 +#, c-format +msgid "" +"If GAME is specified as a number between 1 and 9, load and continue\n" +"playing that game. If GAME is not specified, start a new game.\n" +"\n" +msgstr "" +"Se SEANCO estas indikita kiel numero inter 1 kaj 9, ŝargi kaj daŭrigi\n" +"ludadon de tiu seanco. Se SEANCO ne aperas, ekigi novan seancon.\n" +"\n" + +#. TRANSLATORS: The first %s is the proper name of the package +#. author, John Zaitseff [IPA d͡ʒɒn ˈzaɪ̯t͡səf]; the second %s is +#. the e-mail address for reporting bugs. Please add ANOTHER +#. line with the (translated) text "Report translation bugs to +#.
\n", with ADDRESS replaced with either an e-mail +#. address or web URL for reporting bugs in your translation. +#: src/trader.c:334 +#, c-format +msgid "Report bugs to %s <%s>.\n" +msgstr "" +"Raportu program-misojn al: %s <%s>.\n" +"Raportu traduk-misojn al: .\n" + +#. TRANSLATORS: %s is the e-mail address for reporting bugs. As +#. with the previous string, please add ANOTHER line with the +#. (translated) text "Report translation bugs to
\n", +#. with ADDRESS replaced with either an e-mail address or web URL +#. for reporting bugs in your translation. +#: src/trader.c:341 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Raportu program-misojn al: <%s>.\n" +"Raportu traduk-misojn al: .\n" + +#. TRANSLATORS: The first %s is for packagers and may be +#. something like "Debian". +#: src/trader.c:346 +#, c-format +msgid "Report %s bugs to <%s>.\n" +msgstr "Raportu %s-misojn al <%s>.\n" + +#: src/trader.c:349 +#, c-format +msgid "Star Traders home page: <%s>.\n" +msgstr "Hejmpaĝo de Star Traders: <%s>.\n" + +#. TRANSLATORS: The eight company names do NOT have to be literal +#. translations of the English names. In fact, if possible, the +#. names should start with successive letters of your alphabet (in +#. English, for example, "A" to "H"), and, ideally, be related to +#. constellations or stars in our galaxy. No company name should be +#. more than 24 characters (column positions, to be precise) long. +#: src/globals.c:47 +msgid "Altair Starways" +msgstr "Altairaj Stelvojoj" + +#: src/globals.c:48 +msgid "Betelgeuse, Ltd" +msgstr "Betelĝuza, Klr" + +#: src/globals.c:49 +msgid "Capella Freight Co" +msgstr "Capella Frajto Ko" + +#: src/globals.c:50 +msgid "Denebola Shippers" +msgstr "Denebolaj Ŝipistoj" + +#: src/globals.c:51 +msgid "Eridani Expediters" +msgstr "Eridanaj Frajtistoj" + +#: src/globals.c:52 +msgid "Fornax Express" +msgstr "Fornakso Ekspresa" + +#: src/globals.c:53 +msgid "Gemeni Inc" +msgstr "Ĝemeloj Enk" + +#: src/globals.c:54 +msgid "Hercules and Co" +msgstr "Herkulo kaj Ko" + +#. TRANSLATORS: This string specifies the keycodes (keyboard input +#. codes) used to enter the Stock Transaction window for each +#. company. There must be exactly eight characters, one for each +#. company in order, before the ASCII vertical line "|"; these must +#. be EITHER all in upper-case or all in lower-case. If at all +#. possible, these should be successive letters in your alphabet (in +#. English, "A" to "H"). Do NOT use digits or control characters. +#. Do not change or translate anything after the vertical line. +#: src/globals.c:68 +msgid "ABCDEFGH|input|Companies" +msgstr "abcdefgh|input|Companies" + +#. TRANSLATORS: This string specifies the keycodes used to select a +#. game move. There must be exactly 20 characters, one for each +#. move, before the ASCII vertical line "|"; these must be EITHER all +#. in upper-case or all in lower-case. If at all possible, these +#. should be successive letters in your alphabet. Do NOT use digits +#. or control characters. Do not change or translate anything after +#. the vertical line. +#: src/globals.c:80 +msgid "ABCDEFGHIJKLMNOPQRST|input|GameMoves" +msgstr "abcdefghijklmnoprstu|input|GameMoves" + +#. TRANSLATORS: This string is used to display the galaxy map to +#. screen. There must be exactly 11 characters before the ASCII +#. vertical line. The first ("." in English) is used for empty +#. space, the second ("+") for outposts, the third ("*") for stars, +#. the remaining for the eight companies. Do not change or translate +#. anything after the vertical line. Double-width characters ARE +#. handled correctly. +#: src/globals.c:92 +msgid ".+*ABCDEFGH|output|MapVals" +msgstr ".@*ABCDEFGH|output|MapVals" + +#. TRANSLATORS: This string is used to display the game moves +#. (choices). There must be exactly 20 characters (NUMBER_MOVES) +#. before the ASCII vertical line. The first character corresponds +#. to the first character in the "input|GameMoves" string, and so on. +#. Do not change or translate anything after the vertical line. +#. Double-width characters ARE handled correctly. +#: src/globals.c:103 +msgid "abcdefghijklmnopqrst|output|GameMoves" +msgstr "abcdefghijklmnoprstu|output|GameMoves" + +#. TRANSLATORS: The ordinal strings "1st" to "8th" are used in the +#. Game Winner dialog box at the end of the game. If ordinals depend +#. on the gender of the player, it may be simpler to list cardinal +#. numbers instead (eg, "No. 1"). Up to five characters are allowed +#. (see ORDINAL_COLS in src/intf.h). +#: src/globals.c:114 +msgid "1st" +msgstr "1a" + +#: src/globals.c:115 +msgid "2nd" +msgstr "2a" + +#: src/globals.c:116 +msgid "3rd" +msgstr "3a" + +#: src/globals.c:117 +msgid "4th" +msgstr "4a" + +#: src/globals.c:118 +msgid "5th" +msgstr "5a" + +#: src/globals.c:119 +msgid "6th" +msgstr "6a" + +#: src/globals.c:120 +msgid "7th" +msgstr "7a" + +#: src/globals.c:121 +msgid "8th" +msgstr "8a" + +#: src/game.c:117 src/game.c:152 +#, c-format +msgid "Loading game %d... " +msgstr "Ŝargado de la seanco %d... " + +#: src/game.c:226 +#, c-format +msgid " First Player " +msgstr " Unua ludanto " + +#: src/game.c:227 +#, c-format +msgid "The first player to go is ^{%ls^}." +msgstr "La unua ludanto kiu moviĝos estas ^{%ls^}." + +#. TRANSLATORS: The keycode should be modified to +#. match that (or those) specified with msgctxt +#. "input|ContinueGame". +#: src/game.c:259 +#, c-format +msgid "Enter number of players [^{1^}-^{%d^}] or ^{^} to continue a game: " +msgstr "Indiku nombron da ludantoj [^{1^}-^{%d^}] aŭ ^{^} por daŭrigi seancon: " + +#. TRANSLATORS: This string specifies the keycodes used to continue a +#. game; these must NOT contain any numeric digit from 1 to 9. The +#. first character (keyboard input code) is used to print the user's +#. response if one of those keys is pressed. Both upper and +#. lower-case versions should be present. +#: src/game.c:276 +msgctxt "input|ContinueGame" +msgid "Cc" +msgstr "Dd" + +#: src/game.c:341 src/move.c:399 +#, c-format +msgid "Enter game number [^{1^}-^{9^}] or ^{^} to cancel: " +msgstr "Indiku seanc-numeron [^{1^}-^{9^}] aŭ ^{^} por nuligi: " + +#: src/game.c:406 +#, c-format +msgid "Please enter your name: " +msgstr "Bonvolu indiki vian nomon: " + +#: src/game.c:425 +#, c-format +msgid "Do you need any instructions? [^{Y^}/^{N^}] " +msgstr "Ĉu vi bezonas instrukciojn? [^{J^}/^{N^}] " + +#: src/game.c:443 +#, c-format +msgid " Enter Player Names " +msgstr " Indiku ludant-nomojn " + +#: src/game.c:451 +#, c-format, range: 1..8 +msgid "Player %d: " +msgstr "Ludanto %d: " + +#: src/game.c:529 +#, c-format +msgid "Does any player need instructions? [^{Y^}/^{N^}] " +msgstr "Ĉu iu ludanto bezonas instrukciojn? [^{J^}/^{N^}] " + +#: src/game.c:563 +#, c-format +msgid " Game Over " +msgstr " Ludo-fino " + +#: src/game.c:564 +#, c-format +msgid "The game is over after one turn." +msgid_plural "The game is over after %d turns." +msgstr[0] "La ludo finiĝas post unu ciklo." +msgstr[1] "La ludo finiĝas post %d cikloj." + +#: src/game.c:575 +#, c-format +msgid " Total Value " +msgstr " Totalo " + +#: src/game.c:577 +#, c-format +msgid "Your total value was ^{%N^}." +msgstr "Via totalo estis ^{%N^}." + +#: src/game.c:588 +#, c-format +msgid "" +"The winner is ^{%ls^}\n" +"who is ^[*** BANKRUPT ***^]" +msgstr "" +"La venkanto estas ^{%ls^}\n" +"kiu estas ^[*** BANKROTINTO ***^]" + +#: src/game.c:591 +#, c-format +msgid "" +"The winner is ^{%ls^}\n" +"with a value of ^{%N^}." +msgstr "" +"La venkanto estas ^{%ls^}\n" +"kun totalo ^{%N^}." + +#: src/game.c:597 +#, c-format +msgid " Game Winner " +msgstr " Lud-venkanto " + +#. TRANSLATORS: "Player" is used as a column title in a +#. table containing all player names. +#: src/game.c:606 src/move.c:868 +#, c-format +msgctxt "subtitle" +msgid "Player" +msgstr "Ludanto" + +#. TRANSLATORS: "Total Value" refers to the total worth +#. (shares, cash and debt) of any given player. %ls is the +#. currency symbol of the current locale. +#: src/game.c:611 +#, c-format +msgctxt "subtitle" +msgid "Total Value (%ls)" +msgstr "Totalo (%ls)" + +#: src/game.c:645 src/game.c:695 src/exch.c:100 +#, c-format +msgid "Player: ^{%ls^}" +msgstr "Ludanto: ^{%ls^}" + +#: src/game.c:648 +#, c-format +msgid " Turn: ^{%d^} " +msgstr " Ciklo: ^{%d^} " + +#: src/game.c:649 +#, c-format +msgid " ^[*** Last Turn ***^] " +msgstr " ^[*** Lasta ciklo ***^] " + +#: src/game.c:693 +#, c-format +msgid " Stock Portfolio " +msgstr " Akcio-portalo " + +#. TRANSLATORS: The current player is bankrupt (has no +#. shares or cash, ie, whose total value is zero) +#: src/game.c:702 +#, c-format +msgid "^[* * * B A N K R U P T * * *^]" +msgstr "^[* * * B A N K R O T A * * *^]" + +#: src/game.c:717 src/exch.c:112 +#, c-format +msgid "No companies on the map" +msgstr "Neniu kompanio sur la mapo" + +#. TRANSLATORS: "Company" is a two-line column label in +#. a table containing a list of companies. +#: src/game.c:725 src/exch.c:120 +#, c-format +msgctxt "subtitle" +msgid "" +"\n" +"Company" +msgstr "" +"\n" +"Kompanio" + +#. TRANSLATORS: "Ownership" is a two-line column label +#. in a table containing the current player's +#. percentage ownership in any given company. The +#. maximum column width is 10 characters (see +#. OWNERSHIP_COLS in src/intf.h). +#: src/game.c:732 +#, c-format +msgctxt "subtitle" +msgid "" +"Ownership\n" +"(%%)" +msgstr "" +"Posedo\n" +"(%%)" + +#. TRANSLATORS: "Holdings" is a two-line column label +#. in a table containing the number of shares the +#. current player owns in any given company. The +#. maximum column width is 10 characters (see +#. STOCK_OWNED_COLS in src/intf.h). +#: src/game.c:739 +#, c-format +msgctxt "subtitle" +msgid "" +"Holdings\n" +"(shares)" +msgstr "" +"Havaĵoj\n" +"(akcioj)" + +#. TRANSLATORS: "Return" is a two-line column label in +#. a table containing the share return as a percentage +#. in any given company. The maximum column width is +#. 10 characters (see SHARE_RETURN_COLS in src/intf.h). +#: src/game.c:746 src/exch.c:141 +#, c-format +msgctxt "subtitle" +msgid "" +"Return\n" +"(%%)" +msgstr "" +"Rendimento\n" +"(%%)" + +#. TRANSLATORS: "Price per share" is a two-line column +#. label in a table containing the price per share in +#. any given company. %ls is the currency symbol in +#. the current locale. The maximum column width is 12 +#. characters INCLUDING the currency symbol (see +#. SHARE_PRICE_COLS in src/intf.h). +#: src/game.c:755 src/exch.c:150 +#, c-format +msgctxt "subtitle" +msgid "" +"Price per\n" +"share (%ls)" +msgstr "" +"Prezo por\n" +"akcio (%ls)" + +#. TRANSLATORS: The "Total value", "Current cash", +#. "Current debt" and "Interest rate" labels MUST all be +#. the same length (ie, right-padded with spaces as +#. needed) and must have at least one trailing space so +#. that the display routines work correctly. The maximum +#. length of each label is 36 characters. +#. +#. Note that some of these labels are used for both the +#. Player Status window and the Trading Bank window. +#: src/game.c:796 +#, c-format +msgctxt "label" +msgid "Total value: " +msgstr "Totalo: " + +#: src/game.c:800 src/exch.c:324 +#, c-format +msgctxt "label" +msgid "Current cash: " +msgstr "Nuna mono: " + +#: src/game.c:807 src/exch.c:332 +#, c-format +msgctxt "label" +msgid "Current debt: " +msgstr "Nuna ŝuldo: " + +#: src/game.c:813 src/exch.c:337 +#, c-format +msgctxt "label" +msgid "Interest rate: " +msgstr "Interezo: " + +#. TRANSLATORS: Each label may be up to 37 characters wide +#. (for <1> and <2>) or 38 characters wide (for <3> and +#. ). The sequences "^{" and "^}" change the +#. character rendition (attributes) and take up no space. +#: src/move.c:243 src/exch.c:182 +#, c-format +msgid "^{<1>^} Display stock portfolio" +msgstr "^{<1>^} Montri la akci-portalon" + +#: src/move.c:245 +#, c-format +msgid "^{<2>^} Declare bankruptcy" +msgstr "^{<2>^} Deklari bankroton" + +#: src/move.c:247 +#, c-format +msgid "^{<3>^} Save and end the game" +msgstr "^{<3>^} Konservi seancon kaj eliri" + +#: src/move.c:249 +#, c-format +msgid "^{^} Quit the game" +msgstr "^{^} Eliri la ludon" + +#. TRANSLATORS: The maximum column width is 38 characters, +#. including the trailing space. The sequences "^{", "^}", +#. "^[" and "^]" do not take up any room. "%lc" takes up +#. either one or two columns, depending on the appropriate +#. "output|GameMoves" string in the current PO file. +#: src/move.c:258 +#, c-format +msgid "Select move [^[%lc^]-^[%lc^]/^{1^}-^{3^}/^{^}]: " +msgstr "Elektu movon [^[%lc^]-^[%lc^]/^{1^}-^{3^}/^{^}]: " + +#. TRANSLATORS: A game usually consists of +#. DEFAULT_MAX_TURN (50) turns. On each +#. turn, the computer randomly selects +#. NUMBER_MOVES (20) moves (positions on the +#. map); each player selects just one move +#. per turn. "Move" refers to the player's +#. choice. +#: src/move.c:295 +#, c-format +msgid "Move ^{%lc^}" +msgstr "Movo ^{%lc^}" + +#: src/move.c:316 +#, c-format +msgid "^{<2>^} (Declare bankruptcy)" +msgstr "^{<2>^} (Deklari bankroton)" + +#: src/move.c:325 +#, c-format +msgid "^{<3>^} (Save and end the game)" +msgstr "^{<3>^} (Konservi kaj eliri)" + +#: src/move.c:346 +#, c-format +msgid "^{^} (Quit the game)" +msgstr "^{^} (Eliri la ludon)" + +#: src/move.c:361 +#, c-format +msgid "Are you sure? [^{Y^}/^{N^}] " +msgstr "Ĉu vi certas? [^{J^}/^{N^}] " + +#: src/move.c:378 src/move.c:456 +#, c-format +msgid "Saving game %d... " +msgstr "Konservado de la seanco %d... " + +#: src/move.c:686 src/move.c:694 src/move.c:1052 src/move.c:1089 +#, c-format +msgid " Bankruptcy Court " +msgstr " Bankrota kortumo " + +#. TRANSLATORS: %ls is the player's name. +#: src/move.c:688 +#, c-format +msgid "%ls has been declared bankrupt by the Interstellar Trading Bank." +msgstr "%ls estis deklarata de la Interstelara Komerca Banko kiel bankrota." + +#. TRANSLATORS: %ls is the player's name. +#: src/move.c:696 +#, c-format +msgid "%ls has declared bankruptcy." +msgstr "%ls deklaris bankroton." + +#: src/move.c:764 +#, c-format +msgid " New Company " +msgstr " Nova kompanio " + +#: src/move.c:765 +#, c-format +msgid "" +"A new company has been formed!\n" +"Its name is ^{%ls^}." +msgstr "" +"Nova kompanio naskiĝis!\n" +"Ĝi nomiĝas ^{%ls^}." + +#: src/move.c:824 +#, c-format +msgid "" +"^{%ls^} has just merged into ^{%ls^}.\n" +"Please note the following transactions:\n" +msgstr "" +"^{%ls^} ĵus kunfandiĝis al ^{%ls^}.\n" +"Bonvolu rimarki la jenajn transakciojn:\n" + +#: src/move.c:830 +#, c-format +msgid " Company Merger " +msgstr " Kompani-kunfandisto " + +#. TRANSLATORS: "Old stock" refers to the company that has +#. just ceased existence due to a merger. +#. +#. Note that the "Old stock" and "New stock" labels MUST be +#. the same length and must contain a trailing space for the +#. display routines to work correctly. The maximum length of +#. each label is 36 characters. +#: src/move.c:850 +#, c-format +msgctxt "label" +msgid "Old stock: " +msgstr "Malnova akcio: " + +#. TRANSLATORS: "New stock" refers to the company that has +#. absorbed the other due to a merger. +#: src/move.c:861 +#, c-format +msgctxt "label" +msgid "New Stock: " +msgstr "Nova akcio: " + +#. TRANSLATORS: "Bonus" refers to the bonus cash amount paid to +#. each player after two companies merge. %ls is the currency +#. symbol in the current locale. The maximum column width is +#. 12 characters INCLUDING the currency symbol (see +#. MERGE_BONUS_COLS in src/intf.h). +#: src/move.c:875 +#, c-format +msgctxt "subtitle" +msgid "Bonus (%ls)" +msgstr "Premio (%ls)" + +#. TRANSLATORS: "Total" refers to the total number of shares in +#. the new company after a merger. The maximum column width is +#. 8 characters (see MERGE_TOTAL_STOCK_COLS in src/intf.h). +#: src/move.c:880 +#, c-format +msgctxt "subtitle" +msgid "Total" +msgstr "Totalo" + +#. TRANSLATORS: "New" refers to how many (new) shares each +#. player receives in the surviving company after a merger. +#. The maximum column width is 8 characters (see +#. MERGE_NEW_STOCK_COLS in src/intf.h). +#: src/move.c:887 +#, c-format +msgctxt "subtitle" +msgid "New" +msgstr "Nova" + +#. TRANSLATORS: "Old" refers to how many shares each player had +#. in the company ceasing existence. The maximum column width +#. is 8 characters (see MERGE_OLD_STOCK_COLS in src/intf.h). +#: src/move.c:893 +#, c-format +msgctxt "subtitle" +msgid "Old" +msgstr "Malnova" + +#. TRANSLATORS: %ls represents the company name. +#: src/move.c:1054 +#, c-format +msgid "" +"%ls has been declared bankrupt by the Interstellar Trading Bank.\n" +"\n" +"^{All assets have been taken to repay outstanding loans.^}" +msgstr "" +"%ls estis deklarata de la Interstelara Komerca Banko kiel bankrota.\n" +"\n" +"^{Ĉiuj havaĵoj estis prenataj por repagi gravajn pruntojn.^}" + +#. TRANSLATORS: %ls represents the company name. +#: src/move.c:1078 +#, c-format +msgid "" +"%ls has been declared bankrupt by the Interstellar Trading Bank.\n" +"\n" +"^{The Bank has agreed to pay stock holders ^}%.2f%%^{ of the share value on each share owned.^}" +msgstr "" +"%ls estis deklarata de la Interstelara Komerca Banko kiel bankrota.\n" +"\n" +"^{La banko konsentis pagi al akci-tenantoj ^}%.2f%%^{ el la akci-valoro de ĉiu posedita akcio.^}" + +#. TRANSLATORS: The label "Amount paid per share" +#. refers to payment made by the Interstellar +#. Trading Bank to each player upon company +#. bankruptcy. This label MUST be the same +#. length as "Old share value" and MUST have at +#. least one trailing space for the display +#. routines to work correctly. The maximum +#. length is 28 characters. +#: src/move.c:1106 +#, c-format +msgctxt "label" +msgid "Amount paid per share: " +msgstr "Kvanto pagita por akcio: " + +#. TRANSLATORS: "Old share value" refers to the +#. share price of a company before it was forced +#. into bankruptcy by the Bank. This label must be +#. the same width as "Amount paid per share". +#: src/move.c:1114 +#, c-format +msgctxt "label" +msgid "Old share value: " +msgstr "Malnova akci-valoro: " + +#: src/move.c:1197 src/move.c:1232 src/exch.c:321 +#, c-format +msgid " Interstellar Trading Bank " +msgstr " Interstelara Komerca Banko " + +#: src/move.c:1199 +#, c-format +msgid "" +"You were forced to borrow %N\n" +"to cover losses from company shares." +msgstr "" +"Vi estis devigata pruntepreni %N\n" +"por kovri perdojn el kompani-akcioj." + +#: src/move.c:1234 +#, c-format +msgid "" +"Your debt has amounted to %N!\n" +"^{The Bank has impounded ^}%N^{ from your cash.^}" +msgstr "" +"Via ŝuldo amasiĝis al %N!\n" +"^{La banko rezerv-prenis ^}%N^{ el via mono.^}" + +#: src/exch.c:98 +#, c-format +msgid " Interstellar Stock Exchange " +msgstr " Interstelara akci-interŝanĝejo " + +#. TRANSLATORS: "Shares left" is a two-line column +#. label in a table containing the number of shares +#. left to be purchased in any given company. The +#. maximum column width is 10 characters (see +#. STOCK_LEFT_COLS in src/intf.h). +#: src/exch.c:127 +#, c-format +msgctxt "subtitle" +msgid "" +"Shares\n" +"left" +msgstr "" +"Akcioj\n" +"lasitaj" + +#. TRANSLATORS: "Shares issued" is a two-line column +#. label in a table containing the number of shares +#. already sold (ie, bought by all players) in any +#. given company. The maximum column width is 10 +#. characters (see STOCK_ISSUED_COLS in src/intf.h). +#: src/exch.c:134 +#, c-format +msgctxt "subtitle" +msgid "" +"Shares\n" +"issued" +msgstr "" +"Akcioj\n" +"venditaj" + +#. TRANSLATORS: Each label may be up to 37 characters wide +#. (for <1> and <2>) or 38 characters wide (for <3> and <4>). +#: src/exch.c:186 +#, c-format +msgid "^{<2>^} Display galaxy map" +msgstr "^{<2>^} Montri galaksi-mapon" + +#: src/exch.c:188 +#, c-format +msgid "^{<3>^} Visit the Trading Bank" +msgstr "^{<3>^} Viziti la Komercan Bankon" + +#: src/exch.c:190 +#, c-format +msgid "^{<4>^} Exit the Stock Exchange" +msgstr "^{<4>^} Eliri la akci-interŝanĝejon" + +#: src/exch.c:193 +#, c-format +msgid "Enter selection [^[Company letter^]/^{1^}-^{4^}]: " +msgstr "Indiku elekton [^[Kompani-litero^]/^{1^}-^{4^}]: " + +#. TRANSLATORS: The "Total value", "Current cash", "Current +#. debt", "Interest rate" and "Credit limit" labels MUST all be +#. the same length (ie, right-padded with spaces as needed) and +#. must have at least one trailing space so that the display +#. routines work correctly. The maximum length of each label +#. is 36 characters. +#. +#. Note that some of these labels are used for both the Player +#. Status window and the Trading Bank window. +#: src/exch.c:351 +#, c-format +msgctxt "label" +msgid "Credit limit: " +msgstr "Kredit-limo: " + +#. TRANSLATORS: The "Borrow money", "Repay debt" and "Exit +#. from the Bank" menu options must all be the same length +#. (ie, padded with trailing spaces as required). The maximum +#. length is 72 characters. +#: src/exch.c:366 +#, c-format +msgid "^{<1>^} Borrow money " +msgstr "^{<1>^} Pruntepreni monon" + +#: src/exch.c:368 +#, c-format +msgid "^{<2>^} Repay debt " +msgstr "^{<2>^} Repagi ŝuldon " + +#: src/exch.c:370 +#, c-format +msgid "^{<3>^} Exit from the Bank" +msgstr "^{<3>^} Eliri la bankon " + +#: src/exch.c:373 +#, c-format +msgid "Enter selection [^{1^}-^{3^}]: " +msgstr "Indiku elekton [^{1^}-^{3^}]: " + +#: src/exch.c:426 +#, c-format +msgid " Insufficient Credit Limit " +msgstr " Nesufiĉa kredit-limo " + +#: src/exch.c:427 +#, c-format +msgid "The Bank will not lend you any more money." +msgstr "La banko ne pruntedonos al vi pli da mono." + +#: src/exch.c:447 +#, c-format +msgid "How much do you wish to borrow? " +msgstr "Kiom vi deziras pruntepreni? " + +#: src/exch.c:479 +#, c-format +msgid " No Debt " +msgstr " Sen ŝuldo " + +#: src/exch.c:480 +#, c-format +msgid "You have no debt to repay." +msgstr "Vi havas neniom da ŝuldo por repagi." + +#: src/exch.c:484 +#, c-format +msgid " No Cash " +msgstr " Sen mono " + +#: src/exch.c:485 +#, c-format +msgid "You have no cash with which to repay the debt!" +msgstr "Vi havan neniom da mono por repagi la ŝuldon!" + +#: src/exch.c:505 +#, c-format +msgid "How much do you wish to repay? " +msgstr "Kiom vi deziras repagi? " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:581 +#, c-format +msgid " Stock Transaction in %ls " +msgstr " Akcia transakcio en %ls " + +#. TRANSLATORS: "Shares issued" represents the number of +#. shares already sold by the company to all players. +#. +#. Note that the labels "Shares issued", "Shares left", +#. "Price per share" and "Return" must all be the same length +#. and must have at least one trailing space for the output +#. routines to work correctly. The maximum length of each +#. label is 22 characters. +#: src/exch.c:592 +#, c-format +msgctxt "label|Stock A" +msgid "Shares issued: " +msgstr "Akcioj venditaj: " + +#. TRANSLATORS: "Shares left" is the number of shares that are +#. left to be purchased in the current company. +#: src/exch.c:600 +#, c-format +msgctxt "label|Stock A" +msgid "Shares left: " +msgstr "Akcioj lasitaj: " + +#. TRANSLATORS: "Price per share" is the cost of each share in +#. the current company. +#: src/exch.c:607 +#, c-format +msgctxt "label|Stock A" +msgid "Price per share: " +msgstr "Prezo por akcio: " + +#. TRANSLATORS: "Return" is the share return as a percentage. +#: src/exch.c:613 +#, c-format +msgctxt "label|Stock A" +msgid "Return: " +msgstr "Rendimento: " + +#. TRANSLATORS: "Current holdings" is the number of shares the +#. current player owns in this particular company. +#. +#. Note that the labels "Current holdings", "Percentage owned" +#. and "Current cash" MUST all be the same length and contain at +#. least one trailing space for the display routines to work +#. correctly. The maximum length of each label is 18 +#. characters. +#: src/exch.c:626 +#, c-format +msgctxt "label|Stock B" +msgid "Current holdings: " +msgstr "Nunaj havaĵoj: " + +#. TRANSLATORS: "Percentage owned" is the current player's +#. percentage ownership in this particular company. +#: src/exch.c:633 +#, c-format +msgctxt "label|Stock B" +msgid "Percentage owned: " +msgstr "Elcento posedita: " + +#: src/exch.c:638 +#, c-format +msgctxt "label|Stock B" +msgid "Current cash: " +msgstr "Nuna mono: " + +#. TRANSLATORS: Each label may be up to 35 characters wide +#. (for <1> and <2>) or 36 characters wide (for <3> and <4>). +#: src/exch.c:651 +#, c-format +msgid "^{<1>^} Buy stock from company" +msgstr "^{<1>^} Aĉeti akcion el kompanio" + +#: src/exch.c:653 +#, c-format +msgid "^{<2>^} Sell stock back to company" +msgstr "^{<2>^} Vendi akcion reen al kompanio" + +#: src/exch.c:655 +#, c-format +msgid "^{<3>^} Bid company to issue more shares" +msgstr "^{<3>^} Peti kompanion vendi pli akciojn" + +#: src/exch.c:657 +#, c-format +msgid "^{<4>^} Exit to the Stock Exchange" +msgstr "^{<4>^} Eliri la akci-interŝanĝejon" + +#: src/exch.c:660 +#, c-format +msgid "Enter selection [^{1^}-^{4^}]: " +msgstr "Indiku elekton [^{1^}-^{4^}]: " + +#: src/exch.c:716 +#, c-format +msgid " No Shares Available " +msgstr " Neniu akcio disponeblas " + +#: src/exch.c:717 +#, c-format +msgid "No more shares are available for purchase." +msgstr "Neniu plia akcio disponeblas por aĉeto." + +#: src/exch.c:721 +#, c-format +msgid " Insufficient Cash " +msgstr " Nesufiĉe da mono " + +#: src/exch.c:722 +#, c-format +msgid "" +"You do not have enough cash\n" +"to purchase additional shares." +msgstr "" +"Vi ne havas sufiĉe da mono\n" +"por aĉeti aldonajn akciojn." + +#: src/exch.c:733 +#, c-format +msgid "You can purchase ^{one^} share." +msgid_plural "You can purchase up to ^{%'ld^} shares." +msgstr[0] "Vi povas aĉeti ^{unu^} akcion." +msgstr[1] "Vi povas aĉeti ĝis ^{%'ld^} akciojn." + +#: src/exch.c:739 +#, c-format +msgid "How many shares do you wish to purchase? " +msgstr "Kiom da akcioj vi deziras aĉeti? " + +#: src/exch.c:760 +#, c-format +msgid " No Shares " +msgstr " Neniu akcio " + +#: src/exch.c:761 +#, c-format +msgid "You do not have any shares to sell." +msgstr "Vi havas neniun akcio por vendi." + +#: src/exch.c:768 +#, c-format +msgid "You can sell ^{one^} share." +msgid_plural "You can sell up to ^{%'ld^} shares." +msgstr[0] "Vi povas vendi ^{unu^} akcion." +msgstr[1] "Vi povas vendi ĝis ^{%'ld^} akciojn." + +#: src/exch.c:774 +#, c-format +msgid "How many shares do you wish to sell? " +msgstr "Kiom da akcioj vi deziras vendi? " + +#: src/exch.c:802 +#, c-format +msgid " No Shares Issued " +msgstr " Neniu akcio vendita " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:804 +#, c-format +msgid "" +"%ls has refused\n" +"to issue more shares." +msgstr "" +"%ls rifuzis\n" +"disponigi pli da akcioj." + +#: src/exch.c:809 +#, c-format +msgid " Shares Issued " +msgstr " Akcioj venditaj " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:811 +#, c-format +msgid "" +"%ls has issued\n" +"^{one^} more share." +msgid_plural "" +"%ls has issued\n" +"^{%'ld^} more shares." +msgstr[0] "" +"%ls disponigis\n" +"^{unu^} plian akcion." +msgstr[1] "" +"%ls disponigis\n" +"^{%'ld^} pliajn akciojn." + +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 +#, c-format +msgid "%s: missing field on line %d" +msgstr "%s: mankas kampon en linio %d" + +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 +#, c-format +msgid "%s: illegal field on line %d" +msgstr "%s: malpermesata kampo en linio %d" + +#: src/fileio.c:51 +#, c-format +msgid "%s: illegal field on line %d: `%s'" +msgstr "%s: malpermesata kampo en linio %d: '%s'" + +#: src/fileio.c:55 +#, c-format +msgid "%s: illegal value on line %d: `%s'" +msgstr "%s: malpermesata valoro en linio %d: '%s'" + +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 +#, c-format +msgid "%s: illegal value on line %d" +msgstr "%s: malpermesata valoro en linio %d" + +#: src/fileio.c:98 +#, c-format +msgid "%s: illegal characters on line %d" +msgstr "%s: malpermesataj signoj en linio %d" + +#: src/fileio.c:183 +#, c-format +msgid "%s: could not convert string" +msgstr "%s: ne eblis konverti ĉenon" + +#: src/fileio.c:257 +#, c-format +msgid " Game Not Found " +msgstr " Seanco ne trovita " + +#: src/fileio.c:258 +#, c-format +msgid "Game %d has not been saved to disk." +msgstr "La seanco %d ne estas konservita en la disko." + +#: src/fileio.c:265 +#, c-format +msgid " Game Not Loaded " +msgstr " Seanco ne ŝargita " + +#: src/fileio.c:266 +#, c-format +msgid "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"La seanco %d ne povis esti ŝargata el la disko.\n" +"\n" +"^{Dosiero %s: %s^}" + +#: src/fileio.c:319 +#, c-format +msgid "%s: missing header in game file" +msgstr "%s: mankas kaplinio en seanc-dosiero" + +#: src/fileio.c:322 +#, c-format +msgid "%s: not a valid game file" +msgstr "%s: ne estas valida seanc-dosiero" + +#: src/fileio.c:325 src/fileio.c:332 +#, c-format +msgid "%s: missing subheader in game file" +msgstr "%s: mankas subkaplinio en seanc-dosiero" + +#: src/fileio.c:328 +#, c-format +msgid "%s: saved under a different version of Star Traders" +msgstr "%s: konservita sub malsama versio de Star Traders" + +#: src/fileio.c:335 +#, c-format +msgid "%s: saved under an incompatible character encoding" +msgstr "%s: konservita sub nekongrua signa enkodigo" + +#: src/fileio.c:343 +#, c-format +msgid "%s: illegal or missing field on line %d" +msgstr "%s: malpermesata aŭ mankanta kampo en linio %d" + +#: src/fileio.c:479 src/fileio.c:501 +#, c-format +msgid " Game Not Saved " +msgstr " Seanco ne konservita " + +#: src/fileio.c:480 +#, c-format +msgid "" +"Game %d could not be saved to disk.\n" +"\n" +"^{Directory %s: %s^}" +msgstr "" +"La seanco %d ne povis esti konservata en la disko.\n" +"\n" +"^{Dosierujo %s: %s^}" + +#: src/fileio.c:502 +#, c-format +msgid "" +"Game %d could not be saved to disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"La seanco %d ne povis esti konservata en la disko.\n" +"\n" +"^{Dosiero %s: %s^}" + +#. TRANSLATORS: The help text for Star Traders is marked up using a +#. custom mark-up format NOT used anywhere else in the source code. +#. +#. Each string is a single page of text that is displayed in an area 76 +#. columns wide by 16 lines high. Each line is delimited by "\n". NO +#. word-wrapping is performed: you must place the "\n" characters in the +#. appropriate place. Ideally, each line within the string should be +#. also (manually) space-justified or centred. TAB characters and other +#. control codes must NOT be used. If a string starts with "@" as the +#. very first character, that string is ignored (as are all strings +#. following): this allows a variable number of help text pages (from +#. one to ten). Multibyte strings are handled correctly (even those +#. requiring shift sequences!). +#. +#. The ASCII circumflex accent character "^" switches to a different +#. character rendition (also called attributes), depending on the +#. character following the "^": +#. +#. ^^ - Print the circumflex accent (ASCII code U+005E) +#. ^N - Switch to using the normal character rendition +#. ^B - Switch to using the bold character rendition +#. ^H - Switch to using the highlight character rendition +#. ^K - Switch to using the keycode character rendition (such as used for "") +#. ^e - Switch to using the character rendition used for empty space +#. ^o - Switch to using the character rendition used for outposts +#. ^s - Switch to using the character rendition used for stars +#. ^c - Switch to using the character rendition used for companies +#. ^k - Switch to using the character rendition used for keyboard choices on the galaxy map +#. +#. The help text parsing routines also understand the following "value +#. escapes" introduced by the ASCII tilde character "~"; these act like +#. "%" conversion specifiers in printf(): +#. +#. ~~ - Print the tilde character (ASCII code U+007E) [*] +#. ~x - Print the width of the galaxy map (MAX_X) [**] +#. ~y - Print the height of the galaxy map (MAX_Y) [**] +#. ~m - Print the number of moves available (NUMBER_MOVES) [**] +#. ~c - Print the maximum number of companies that can be formed (MAX_COMPANIES) [*] +#. ~t - Prints the default number of turns in the game (DEFAULT_MAX_TURN) [**] +#. ~1 to ~9 - Print the keycode for the N-th choice of move [***] +#. ~M - Print the keycode for the last choice of move [***] +#. ~A to ~H - Print the character used to represent the company on the galaxy map [***] +#. ~. - Print the character used to represent empty space on the map [***] +#. ~+ - Print the character used to represent outposts on the map [***] +#. ~* - Print the character used to represent stars on the map [***] +#. +#. [*] Takes one character space (column space) in the output +#. [**] Takes two column spaces in the output +#. [***] Takes one or two column spaces in the output, depending on the +#. appropriate strings in the current PO file. +#. +#. Note that all keycodes and map representation characters use locale- +#. specific characters; double-width characters ARE supported. Note +#. also that the tilde value escapes do NOT change the current character +#. rendition: a circumflex accent escape is needed for that. For +#. example, to display the first choice of move as it would be shown on +#. the galaxy map, use something like "^k~1^N" (a six-character sequence +#. that would translate to just one character (or maybe two) in the +#. output text). +#. +#. Formatting the help text is probably the most complicated and tedious +#. part of translating Star Traders. The author and maintainer of this +#. game is more than happy to help you with this task: if you are able +#. to provide a translation, even if it is not formatted correctly, the +#. maintainer will perform the necessary adjustments for word-wrapping +#. and justification. In addition, remember that you have up to 10 +#. pages in which to display your help text: the translation does not +#. need to correspond exactly to the original text. This text will not +#. be changing any time soon! +#. +#: src/help.c:113 +msgid "" +"^BStar Traders^N is a simple game of interstellar trading. The object of the\n" +"game is to amass the greatest amount of wealth possible. This is done by\n" +"creating interstellar shipping lanes, expanding them and buying shares in\n" +"the companies controlling them. Shares appreciate in value as company\n" +"operations expand. In addition, the return on each share (as a percentage)\n" +"also changes. Players may also borrow from the Interstellar Trading Bank to\n" +"finance additional purchases on the Stock Exchange.\n" +"\n" +"The map of the galaxy is represented by a ^B~x^N x ^B~y^N grid. A typical section\n" +"of it may be:\n" +"\n" +" ^e ~. ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ~. ~. ^N ^e ~. ^N represents ^Bempty space^N,\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ~. ~. ~. ^N ^s ~* ^N represents a ^Bstar^N.\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +msgstr "" +"^BStar Traders^N estas simpla ludo pri interstelara komerco. Ĝia celo estas\n" +"amasigi la plej grandan kvanton da riĉeco ebla. Tion oni atingas per kreado\n" +"de interstelaraj ŝipaj vojoj, pligrandigante ilin kaj aĉetante akciojn en la\n" +"kompanioj kiuj regas ilin. Akcioj plivaloriĝas laŭ la progreso de la\n" +"operacioj de la kompanio. Cetere, la rendimento de ĉiu akcio (procente)\n" +"ankaŭ ŝanĝas. Ludantoj povas ankaŭ pruntepreni el la Interstelara Komerca\n" +"Banko por financi aldonajn aĉetojn en la akci-interŝanĝejo.\n" +"\n" +"La galaksi-mapo estas reprezentata per krado ^B~x^N x ^B~y^N. Ordinara areo de ĝi\n" +"povas esti:\n" +"\n" +" ^e ~. ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ~. ~. ^N ^e ~. ^N reprezentas ^Bvakan spacon^N,\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ~. ~. ~. ^N ^s ~* ^N reprezentas ^Bstelon^N.\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" + +#: src/help.c:132 +msgid "" +"The computer selects ^B~m^N moves (labeled ^k~1^N to ^k~M^N) at random, and places these\n" +"on the map. To select any of the highlighted positions, press that letter.\n" +"For example, some of the moves on the map may be:\n" +"\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^k~3^e ~. ~. ~. ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^k~5^e ~. ~. ^N Moves ^k~1^N to ^k~5^N shown.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +"\n" +"\n" +"Selecting a position that is ^Bnot^N next to a star (such as moves ^k~1^N, ^k~3^N or ^k~5^N)\n" +"will set up an ^Boutpost^N, not belonging to any company. Thus, if move ^k~3^N is\n" +"selected on the above map, a ^o ~+ ^N would be placed at that position.\n" +msgstr "" +"La komputilo elektas hazarde ^B~m^N movojn (etikeditaj per ^k~1^N al ^k~M^N), kaj metas\n" +"ilin sur la mapo. Por elekti iun el la reliefigitaj pozicioj, premu tiun\n" +"literon. Ekzemple, kelkaj el la movoj sur la mapo povas esti:\n" +"\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^k~3^e ~. ~. ~. ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^k~5^e ~. ~. ^N Movoj de ^k~1^N al ^k~5^N estas montrataj.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +"\n" +"\n" +"Elekti pozicion kiu ^Bne^N estas proksime de stelo (kiel la movoj ^k~1^N, ^k~3^N aŭ ^k~5^N)\n" +"rezultas en difino de ^Bpikedo^N, ne apartenanta al iu ajn kompanio. Do, se la\n" +"movo ^k~3^N estus elektata en la supra mapo, ^o ~+ ^N estus metota ĉe tiu pozicio.\n" + +#: src/help.c:150 +msgid "" +"If, on the other hand, a position next to a star (or another outpost) is\n" +"selected, a ^Bcompany^N would be formed and its letter would appear on the map.\n" +"As a reward for creating the company, you are granted the first five shares.\n" +"Up to ^B~c^N companies can be created in this way.\n" +"\n" +"If a position next to an existing company is selected, the company would\n" +"expand its operations by one square. This increases the cost of its shares\n" +"and hence your return. Thus, if the map was as shown below, selecting ^k~6^N\n" +"or ^k~8^N increases Company ^B~B^N's shipping lane:\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~6^N or ^k~8^N increases Company ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +msgstr "" +"Alimaniere, se pozicio proksime de stelo aŭ de alia pikedo estus elektata,\n" +"^Bkompanio^N estus kreota kaj ĝia litero estus aperonta en la mapo. Kiel\n" +"premio por kreo de kompanio, vi ricevas la unuajn kvin akciojn. Ĝis ^B~c^N\n" +"kompanioj povas esti tiel kreataj.\n" +"\n" +"Se pozicio proksime de kompanio estus elektata, la kompanio pliampleksigus\n" +"ĝiajn operaciojn je unu kvadrato. Tio pliigus la koston de ĝiaj akcioj kaj\n" +"tiel ankaŭ la rendimento pliiĝus. Do, se la mapo estus kiel montrate sube,\n" +"elekto de ^k~6^N aŭ ^k~8^N pligrandigas la ŝip-vojon de la kompanio ^B~B^N:\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Movoj ^k~6^N aŭ ^k~8^N pligrandigas kompanion ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" + +#: src/help.c:168 +msgid "" +"Selecting positions next to stars increases the value of your stock by about\n" +"five times as much as an extension not next to a star. Thus move ^k~6^N should\n" +"be preferred to move ^k~8^N.\n" +"\n" +" ^e ^c~C^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ^k~1^e ^o~+^e ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~6^N is preferred to ^k~8^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +"\n" +"You may also expand any company by selecting positions next to outposts.\n" +"Such outposts will be swallowed up by that company. Thus, move ^k~1^N will\n" +"extend Company ^B~C^N by ^Btwo^N squares. As a bonus, outposts next to stars are\n" +"more valuable: the company's share price will increase by a greater amount\n" +"than it would for outposts not next to stars.\n" +msgstr "" +"Elekto de pozicio proksime de steloj plivalorigas viajn akciojn proksimume\n" +"kvinoble ol pozicio ne proksime de stelo. Do la movo ^k~6^N devus esti preferata\n" +"ol la movo ^k~8^N.\n" +"\n" +" ^e ^c~C^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ^k~1^e ^o~+^e ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Movo ^k~6^N estas preferata ol ^k~8^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +"\n" +"Vi povas ankaŭ pligrandigi iun ajn kompanion elektante poziciojn proksimajn\n" +"de pikedoj. Tiaj pikedoj estos englutitaj de tiu kompanio. Do, la movo ^k~1^N\n" +"pligrandigos la kompanion ^B~C^N per ^Bdu^N kvadratoj. Kiel premio, pikedoj prok-\n" +"simaj al steloj estas pli valoraj: la akci-prezo de la kompanio altiĝas pli\n" +"ol se la pikedo ne estas proksima de steloj.\n" + +#: src/help.c:186 +msgid "" +"If two companies are separated on the map by only one square, then they can\n" +"be ^Bmerged^N into one company by selecting that position (if available). For\n" +"example, on the map below, companies ^B~A^N and ^B~B^N can be merged by selecting ^k~5^N.\n" +"When this occurs, the company with the greater assets value takes over the\n" +"other one. Here, Company ^B~B^N might take over Company ^B~A^N. Company ^B~A^N ceases to\n" +"exist, although it may reappear as an entirely new company at a later stage.\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^c~A^e ^c~A^e ^k~5^e ^c~B^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ^c~A^e ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~5^N merges companies ^B~A^N and ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ~. ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ^o~+^e ~. ~. ^N\n" +"\n" +"When companies merge, players are granted shares in the dominant company\n" +"proportional to the amount owned in the old company. As well, a cash bonus\n" +"is also paid, proportional to the percentage of the old company owned.\n" +msgstr "" +"Se du kompanioj estas apartitaj en la mapo per nur unu kvadrato, tiam ili\n" +"povas esti ^Bkunfanditaj^N en unu kompanio per elekto de tiu pozicio (nur se\n" +"disponebla). Ekzemple, en la suba mapo, kompanioj ^B~A^N kaj ^B~B^N povas kunfandiĝi\n" +"per elekto de ^k~5^N. Kiam tio okazas, la kompanio kun pli da havaĵoj akiras la\n" +"alian. Ĉi tie, la kompanio ^B~B^N povus akiri la kompanion ^B~A^N. Kompanio ^B~A^N ĉesas\n" +"ekzisti, kvankam ĝi povos reaperi kiel entute nova kompanio pli poste.\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^c~A^e ^c~A^e ^k~5^e ^c~B^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ^c~A^e ~. ^c~B^e ^c~B^e ^c~B^e ^N Movo ^k~5^N kunfandigas kompaniojn ^B~A^N kaj ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ~. ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ^o~+^e ~. ~. ^N\n" +"\n" +"Kiam kompanioj kunfandiĝas, la ludantoj ricevas akciojn de la mastrumanta\n" +"kompanio proporcie al la kvanto posedita en la malnova kompanio. Kaj premio\n" +"estas ankaŭ pagita, proporcie al la procenta posedo de la malnova kompanio.\n" + +#: src/help.c:205 +msgid "" +"Once you select your move, you enter the ^BInterstellar Stock Exchange^N. Here\n" +"you may purchase shares, sell them, borrow from the Trading Bank or repay\n" +"some of your debt (if applicable). Note that each company issues a limited\n" +"number of shares -- you cannot go on buying for ever! You may, however, bid\n" +"for more shares to be issued. You have a better chance of succeeding if you\n" +"own a larger proportion of the company.\n" +"\n" +"The game usually ends after ^B~t^N turns. However, you may end the game sooner\n" +"by pressing ^K^N when asked to select a move. As well, individual\n" +"players can declare themselves bankrupt at any time. If your debt is large\n" +"enough, the Bank may do this for you! If you do not complete your game in\n" +"the time you have available, you may save the game and continue it later.\n" +"\n" +"\n" +"The ^Bwinner of the game^N is the person with the greatest net worth (total\n" +"value of cash, stock and debt). ^HGood luck^N and may the best person win!\n" +msgstr "" +"Tuj post kiam vi elektas vian movon, vi eniras la ^BInterstelaran akcian\n" +"interŝanĝejon^N. Tie vi povas aĉeti akciojn, vendi ilin, pruntepreni el la\n" +"Komerca Banko aŭ repagi iom el via ŝuldo (se ekzistanta). Rimarku ke ĉiu\n" +"kompanio disponigas limigitan nombron da akcioj -- vi ne povas aĉeti sen-\n" +"fine! Tamen, vi povas peti ke pli da akcioj estu vendataj. Vi pli ŝancas\n" +"sukcesi se vi posedas pli grandan proporcion de la kompanio.\n" +"\n" +"La ludo ordinare finas post ^B~t^N cikloj. Tamen, vi povas fini la ludon pli\n" +"frue premante ^K^N kiam aldemandita elekti movon. Krome, individuaj\n" +"ludantoj povas sin deklari bankrotaj iam ajn. Se via ŝuldo estas sufiĉe\n" +"granda, la banko povas fari tion por vi! Se vi ne plenumas la ludon en la\n" +"tempo kiun vi disponas, vi povas konservi seancon kaj daŭrigi ĝin poste.\n" +"\n" +"\n" +"La ^Bvenkanto de la ludo^N estas tiu kun la plej granda totalo (entuta valoro\n" +"de mono, akcioj kaj ŝuldo). ^HBonan ŝancon^N kaj ke la plej lerta venku!\n" + +#: src/help.c:225 +msgid "@ Help text, page 7\n" +msgstr "@\n" + +#: src/help.c:226 +msgid "@ Help text, page 8\n" +msgstr "@\n" + +#: src/help.c:227 +msgid "@ Help text, page 9\n" +msgstr "@\n" + +#: src/help.c:228 +msgid "@ Help text, page 10\n" +msgstr "@\n" + +#: src/help.c:280 +#, c-format +msgid " How to Play " +msgstr " Kiel ludi " + +#. TRANSLATORS: The first %d is the current page number, +#. the second is the number of pages your help text takes +#. (6, in English). You can replace the second %d with a +#. fixed word, if you like. +#: src/help.c:286 +#, c-format +msgid "Page %d of %d" +msgstr "Paĝo %d el %d" + +#. TRANSLATORS: The reason the user is not asked "Press any +#. key to continue" is historical: many, many people used to +#. ask "where is the key?" :-) +#: src/help.c:487 src/intf.c:3035 +#, c-format +msgid "[ Press to continue ] " +msgstr "[ Premu por daŭrigi ] " + +#. TRANSLATORS: The specific use of and +#. is not essential: you can use , +#. , , or instead of +#. , and almost any other key instead of +#. (other than , , , , +#. or <\>). +#: src/help.c:494 +#, c-format +msgid "[ Press to continue or for the previous page ] " +msgstr "[ Premu por daŭrigi aŭ por la antaŭa paĝo ] " + +#: src/intf.c:110 +#, c-format +msgid "%s: string has incorrect format: `%s'" +msgstr "%s: ĉeno havas malĝustan formon: '%s'" + +#: src/intf.c:126 +#, c-format +msgid "%s: character has illegal width: `%lc'" +msgstr "%s: signo havas malpermesatan larĝon: '%lc'" + +#: src/intf.c:434 +#, c-format +msgid "terminal size is too small (%d x %d required)" +msgstr "terminal-grando tro malgrandas (necesas %d x %d)" + +#: src/intf.c:610 +#, c-format +msgid "Star Traders" +msgstr "Star Traders" + +#: src/intf.c:1265 +#, c-format +msgid "mkchstr_conv: NUL" +msgstr "mkchstr_conv: NUL" + +#: src/intf.c:1568 +#, c-format +msgid "mkchstr: `%s'" +msgstr "mkchstr: '%s'" + +#. TRANSLATORS: This string specifies the keycodes used to insert the +#. default value into the input string, if entered as the very first +#. character. Ideally, it should contain an easily-accessible +#. keycode that would NOT be used in ordinary input. Digits, ".", +#. ",", "+" and "-" are definitely NOT acceptable. +#: src/intf.c:2020 +msgctxt "input|DefaultValue" +msgid "=;" +msgstr "=;" + +#: src/intf.c:2034 src/intf.c:2079 +#, c-format +msgid "gettxline: illegal character in string: `%ls'" +msgstr "gettxline: malpermesata signo en ĉeno: '%ls'" + +#. TRANSLATORS: The strings with msgctxt "input|Yes" and +#. "input|No" contain the keycodes used to determine whether a +#. user is answering "Yes" or "No" in response to some question. +#. Both upper and lower-case versions should be present. +#: src/intf.c:2952 +msgctxt "input|Yes" +msgid "Yy" +msgstr "JjYy" + +#: src/intf.c:2954 +msgctxt "input|No" +msgid "Nn" +msgstr "Nn" + +#. TRANSLATORS: The strings "Yes" and "No" are printed as a +#. response to user input in answer to questions like "Are you +#. sure? [Y/N] " +#: src/intf.c:3005 +msgctxt "answer" +msgid "Yes" +msgstr "Jes" + +#: src/intf.c:3007 +msgctxt "answer" +msgid "No" +msgstr "Ne" + +#: src/utils.c:378 src/utils.c:399 +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/utils.c:404 +msgid ": " +msgstr ": " + +#: src/utils.c:417 +#, c-format +msgid "out of memory" +msgstr "memoro plenpleniĝas" + +#: src/utils.c:1041 +#, c-format +msgid "xmbstowcs: `%s'" +msgstr "xmbstowcs: '%s'" + +#: src/utils.c:1081 +#, c-format +msgid "xwcrtomb: NUL" +msgstr "xwcrtomb: NUL" + +#: src/utils.c:1086 +#, c-format +msgid "xwcrtomb: `%lc'" +msgstr "xwcrtomb: '%lc'" + +#: lib/getopt.c:547 lib/getopt.c:576 +#, c-format +msgid "%s: option '%s' is ambiguous; possibilities:" +msgstr "%s: la modifilo '%s' estas plursenca; eblecoj:" + +#: lib/getopt.c:624 lib/getopt.c:628 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: la modifilo '--%s' ne permesas argumenton\n" + +#: lib/getopt.c:637 lib/getopt.c:642 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: la modifilo '%c%s' ne permesas argumenton\n" + +#: lib/getopt.c:685 lib/getopt.c:704 +#, c-format +msgid "%s: option '--%s' requires an argument\n" +msgstr "%s: la modifilo '--%s' postulas argumenton\n" + +#: lib/getopt.c:742 lib/getopt.c:745 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: nerekonata modifilo '--%s'\n" + +#: lib/getopt.c:753 lib/getopt.c:756 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: nerekonata modifilo '%c%s'\n" + +#: lib/getopt.c:805 lib/getopt.c:808 +#, c-format +msgid "%s: invalid option -- '%c'\n" +msgstr "%s: malvalida modifilo -- '%c'\n" + +#: lib/getopt.c:861 lib/getopt.c:878 lib/getopt.c:1088 lib/getopt.c:1106 +#, c-format +msgid "%s: option requires an argument -- '%c'\n" +msgstr "%s: la modifilo postulas argumenton -- '%c'\n" + +#: lib/getopt.c:934 lib/getopt.c:950 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: la modifilo '-W %s' estas plursenca\n" + +#: lib/getopt.c:974 lib/getopt.c:992 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: la modifilo '-W %s' ne permesas argumenton\n" + +#: lib/getopt.c:1013 lib/getopt.c:1031 +#, c-format +msgid "%s: option '-W %s' requires an argument\n" +msgstr "%s: la modifilo '-W %s' postulas argumenton\n" diff --git a/po/fi.po b/po/fi.po index 7f9d3e5..3fc8ea0 100644 --- a/po/fi.po +++ b/po/fi.po @@ -1,7 +1,7 @@ # ************************************************************************* # * * # * Finnish Translations for Star Traders * -# * Copyright (C) 2012, John Zaitseff * +# * Copyright (C) 2012-14, John Zaitseff * # * Copyright (C) 2012, Free Software Foundation, Inc. * # * * # ************************************************************************* @@ -13,10 +13,10 @@ # msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:06+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 10:59+1000\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" "Language: fi\n" @@ -1120,52 +1120,57 @@ msgstr[1] "" "%ls on myynyt\n" "^{%'ld^} osaketta lisää." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: kenttä puuttuu rivillä %d" -#: src/fileio.c:60 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 +#, c-format +msgid "%s: illegal field on line %d" +msgstr "%s: virheellinen kenttä rivillä %d" + +#: src/fileio.c:51 #, c-format msgid "%s: illegal field on line %d: `%s'" msgstr "%s: virheellinen kenttä rivillä %d: ”%s”" -#: src/fileio.c:64 +#: src/fileio.c:55 #, c-format msgid "%s: illegal value on line %d: `%s'" msgstr "%s: virheellinen arvo rivillä %d: ”%s”" -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 #, c-format msgid "%s: illegal value on line %d" msgstr "%s: virheellinen arvo rivillä %d" -#: src/fileio.c:103 +#: src/fileio.c:98 #, c-format msgid "%s: illegal characters on line %d" msgstr "%s: virheelliset merkit rivillä %d" -#: src/fileio.c:184 +#: src/fileio.c:183 #, c-format msgid "%s: could not convert string" msgstr "%s: ei voitu muuntaa merkkijonoa" -#: src/fileio.c:255 +#: src/fileio.c:257 #, c-format msgid " Game Not Found " msgstr " Peliä ei löytynyt " -#: src/fileio.c:256 +#: src/fileio.c:258 #, c-format msgid "Game %d has not been saved to disk." msgstr "Peliä %d ei ole tallennetu levylle." -#: src/fileio.c:263 +#: src/fileio.c:265 #, c-format msgid " Game Not Loaded " msgstr " Peliä ei ladattu " -#: src/fileio.c:264 +#: src/fileio.c:266 #, c-format msgid "" "Game %d could not be loaded from disk.\n" @@ -1176,47 +1181,42 @@ msgstr "" "\n" "^{Tiedosto %s: %s^}" -#: src/fileio.c:316 +#: src/fileio.c:319 #, c-format msgid "%s: missing header in game file" msgstr "%s: pelitiedostosta puuttuu otsake" -#: src/fileio.c:319 +#: src/fileio.c:322 #, c-format msgid "%s: not a valid game file" msgstr "%s: ei ole kelvollinen pelitiedosto" -#: src/fileio.c:322 src/fileio.c:329 +#: src/fileio.c:325 src/fileio.c:332 #, c-format msgid "%s: missing subheader in game file" msgstr "%s: pelitiedostosta puuttuu aliotsake" -#: src/fileio.c:325 +#: src/fileio.c:328 #, c-format msgid "%s: saved under a different version of Star Traders" msgstr "%s: tallennettu Tähtikauppiaiden eri versiona" -#: src/fileio.c:332 +#: src/fileio.c:335 #, c-format msgid "%s: saved under an incompatible character encoding" msgstr "%s: tallennettu yhteensopimattomana merkkikoodauksena" -#: src/fileio.c:340 +#: src/fileio.c:343 #, c-format msgid "%s: illegal or missing field on line %d" msgstr "%s: virheellinen tai puuttuva kenttä rivillä %d" -#: src/fileio.c:384 -#, c-format -msgid "%s: illegal field on line %d" -msgstr "%s: virheellinen kenttä rivillä %d" - -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Peliä ei tallennettu " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1227,7 +1227,7 @@ msgstr "" "\n" "^{Hakemisto %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1639,31 +1639,31 @@ msgctxt "answer" msgid "No" msgstr "Ei" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "muisti loppui" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: ”%s”" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: ”%lc”" diff --git a/po/fr.po b/po/fr.po index 7b32828..38d667a 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,7 +1,8 @@ # ************************************************************************* # * * # * French Translations for Star Traders * -# * Copyright (C) 2012, Free Software Foundation, Inc. * +# * Copyright (C) 2012-14, John Zaitseff * +# * Copyright (C) 2012-13, Free Software Foundation, Inc. * # * * # ************************************************************************* # @@ -11,10 +12,10 @@ # Frédéric Marchal , 2012. msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:05+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 11:00+1000\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -1115,52 +1116,57 @@ msgstr[1] "" "%ls a émis\n" "^{%'ld^} actions en plus." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: champ manquant à la ligne %d" -#: src/fileio.c:60 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 +#, c-format +msgid "%s: illegal field on line %d" +msgstr "%s: champ illégal à la ligne %d" + +#: src/fileio.c:51 #, c-format msgid "%s: illegal field on line %d: `%s'" msgstr "%s: champ illégal à la ligne %d: « %s »" -#: src/fileio.c:64 +#: src/fileio.c:55 #, c-format msgid "%s: illegal value on line %d: `%s'" msgstr "%s: valeur illégale à la ligne %d: « %s »" -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 #, c-format msgid "%s: illegal value on line %d" msgstr "%s: valeur illégale à la ligne %d" -#: src/fileio.c:103 +#: src/fileio.c:98 #, c-format msgid "%s: illegal characters on line %d" msgstr "%s: caractère illégal à la ligne %d" -#: src/fileio.c:184 +#: src/fileio.c:183 #, c-format msgid "%s: could not convert string" msgstr "%s: la chaîne n'a pas pu être convertie" -#: src/fileio.c:255 +#: src/fileio.c:257 #, c-format msgid " Game Not Found " msgstr " Jeu pas trouvé " -#: src/fileio.c:256 +#: src/fileio.c:258 #, c-format msgid "Game %d has not been saved to disk." msgstr "Le jeu %d n'a pas été enregistré sur disque." -#: src/fileio.c:263 +#: src/fileio.c:265 #, c-format msgid " Game Not Loaded " msgstr " Jeu pas chargé " -#: src/fileio.c:264 +#: src/fileio.c:266 #, c-format msgid "" "Game %d could not be loaded from disk.\n" @@ -1171,47 +1177,42 @@ msgstr "" "\n" "^{Fichier %s: %s^}" -#: src/fileio.c:316 +#: src/fileio.c:319 #, c-format msgid "%s: missing header in game file" msgstr "%s: en-tête manquant dans le fichier du jeu" -#: src/fileio.c:319 +#: src/fileio.c:322 #, c-format msgid "%s: not a valid game file" msgstr "%s: le fichier n'est pas un jeu valable" -#: src/fileio.c:322 src/fileio.c:329 +#: src/fileio.c:325 src/fileio.c:332 #, c-format msgid "%s: missing subheader in game file" msgstr "%s: sous-en-tête manquant dans le fichier de jeu" -#: src/fileio.c:325 +#: src/fileio.c:328 #, c-format msgid "%s: saved under a different version of Star Traders" msgstr "%s: enregistré par une version différente de Star Traders" -#: src/fileio.c:332 +#: src/fileio.c:335 #, c-format msgid "%s: saved under an incompatible character encoding" msgstr "%s: enregistré avec un encodage des caractères incompatible" -#: src/fileio.c:340 +#: src/fileio.c:343 #, c-format msgid "%s: illegal or missing field on line %d" msgstr "%s: champ illégal ou manquant à la ligne %d" -#: src/fileio.c:384 -#, c-format -msgid "%s: illegal field on line %d" -msgstr "%s: champ illégal à la ligne %d" - -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Jeu pas enregistré " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1222,7 +1223,7 @@ msgstr "" "\n" "^{Répertoire %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1646,31 +1647,31 @@ msgctxt "answer" msgid "No" msgstr "Non" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "pas assez de mémoire" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: « %s »" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: « %lc »" diff --git a/po/hr.po b/po/hr.po index 436aa03..643df83 100644 --- a/po/hr.po +++ b/po/hr.po @@ -1,7 +1,7 @@ # ************************************************************************* # * * # * Croatian Translations for Star Traders * -# * Copyright (C) 2012, John Zaitseff * +# * Copyright (C) 2012-14, John Zaitseff * # * * # ************************************************************************* # @@ -12,10 +12,10 @@ # msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:05+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 11:00+1000\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" "Language: hr\n" @@ -1120,52 +1120,57 @@ msgstr[2] "" "Tvrtka %ls je izdala\n" "^{%'ld^} novih dionica." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: nedostaje polje u retku %d" -#: src/fileio.c:60 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 +#, c-format +msgid "%s: illegal field on line %d" +msgstr "%s: nedozvoljeno polje u retku %d" + +#: src/fileio.c:51 #, c-format msgid "%s: illegal field on line %d: `%s'" msgstr "%s: nedozvoljeno polje u retku %d: „%s”" -#: src/fileio.c:64 +#: src/fileio.c:55 #, c-format msgid "%s: illegal value on line %d: `%s'" msgstr "%s: nedozvoljena vrijednost u retku %d: „%s”" -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 #, c-format msgid "%s: illegal value on line %d" msgstr "%s: nedozvoljena vrijednost u retku %d" -#: src/fileio.c:103 +#: src/fileio.c:98 #, c-format msgid "%s: illegal characters on line %d" msgstr "%s: nedozvoljeni znak u retku %d" -#: src/fileio.c:184 +#: src/fileio.c:183 #, c-format msgid "%s: could not convert string" msgstr "%s: ne mogu pretvoriti niz znakova" -#: src/fileio.c:255 +#: src/fileio.c:257 #, c-format msgid " Game Not Found " msgstr " Igra nije pronađena " -#: src/fileio.c:256 +#: src/fileio.c:258 #, c-format msgid "Game %d has not been saved to disk." msgstr "Igra %d nije spremljena na disk." -#: src/fileio.c:263 +#: src/fileio.c:265 #, c-format msgid " Game Not Loaded " msgstr " Igra nije učitana " -#: src/fileio.c:264 +#: src/fileio.c:266 #, c-format msgid "" "Game %d could not be loaded from disk.\n" @@ -1176,47 +1181,42 @@ msgstr "" "\n" "^{Datoteka %s: %s^}" -#: src/fileio.c:316 +#: src/fileio.c:319 #, c-format msgid "%s: missing header in game file" msgstr "%s: nedostaje zaglavlje u datoteci igre" -#: src/fileio.c:319 +#: src/fileio.c:322 #, c-format msgid "%s: not a valid game file" msgstr "%s: nije ispravna datoteka igre" -#: src/fileio.c:322 src/fileio.c:329 +#: src/fileio.c:325 src/fileio.c:332 #, c-format msgid "%s: missing subheader in game file" msgstr "%s: nedostaje podzaglavlje u datoteci igre" -#: src/fileio.c:325 +#: src/fileio.c:328 #, c-format msgid "%s: saved under a different version of Star Traders" msgstr "%s: spremljena različitom inačicom igre Star Traders" -#: src/fileio.c:332 +#: src/fileio.c:335 #, c-format msgid "%s: saved under an incompatible character encoding" msgstr "%s: spremljena s nekompatibilnim kodiranjem znakova" -#: src/fileio.c:340 +#: src/fileio.c:343 #, c-format msgid "%s: illegal or missing field on line %d" msgstr "%s: nedozvoljeno ili nedostaje polje u retku %d" -#: src/fileio.c:384 -#, c-format -msgid "%s: illegal field on line %d" -msgstr "%s: nedozvoljeno polje u retku %d" - -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Igra nije spremljena " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1227,7 +1227,7 @@ msgstr "" "\n" "^{Direktorij %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1639,31 +1639,31 @@ msgctxt "answer" msgid "No" msgstr "Ne" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "nema dovoljno memorije" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: „%s”" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: „%lc”" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 0000000..08cbbf8 --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1719 @@ +# ************************************************************************* +# * * +# * Norwegian Bokmål Translations for Star Traders * +# * Copyright (C) 2012-14, John Zaitseff * +# * * +# ************************************************************************* +# +# This file is distributed under the same license as the trader package. +# +# Contributors: +# Johnny A. Solbu , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: trader 7.5\n" +"Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 11:00+1000\n" +"Last-Translator: Johnny A. Solbu \n" +"Language-Team: Norwegian Bokmaal \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/trader.c:235 +#, c-format +msgid "%s: invalid value for --max-turn: `%s'\n" +msgstr "%s: ugyldig verdi for --max-turn: «%s»\n" + +#: src/trader.c:251 +#, c-format +msgid "%s: invalid operand `%s'\n" +msgstr "%s: ugyldig operand «%s»\n" + +#: src/trader.c:260 +#, c-format +msgid "%s: invalid game number `%s'\n" +msgstr "%s: ugyldig spillnummer «%s»\n" + +#: src/trader.c:269 +#, c-format +msgid "%s: extra operand `%s'\n" +msgstr "%s: ekstra operand «%s»\n" + +#. TRANSLATORS: "John Zaitseff" [IPA d͡ʒɒn ˈzaɪ̯t͡səf] is the proper +#. name of the author. The IPA pronunciation in this comment is in +#. UTF-8 encoding. +#: src/trader.c:284 +#, c-format +msgid "" +"Star Traders (%s) %s\n" +"Copyright (C) %s, John Zaitseff.\n" +"\n" +"Star Traders is a simple game of interstellar trading, where the object\n" +"of the game is to create companies, buy and sell shares, borrow and repay\n" +"money, in order to become the wealthiest player (the winner).\n" +"\n" +"This program is free software that is distributed under the terms of the\n" +"GNU General Public License, version 3 or later. You are welcome to\n" +"modify and/or distribute it under certain conditions. This program has\n" +"NO WARRANTY, to the extent permitted by law; see the License for details.\n" +msgstr "" +"Star Traders (%s) %s\n" +"Opphavsrett (C) %s, John Zaitseff.\n" +"\n" +"Star Traders er et enkelt spill med interstellar handel, der målet med\n" +"spillet er å opprette firmaer, kjøpe og selge aksjer, låne og betale\n" +"tilbake penger for å bli den rikeste spilleren (vinneren).\n" +"\n" +"Dette programmet er Fri programvare som distribueres under vilkårene\n" +"i GNU General Public License, versjon 3 eller nyere. Du er velkommen\n" +"til å endre og / eller distribuere det under visse betingelser. Dette\n" +"programmet har INGEN GARANTI i den grad loven tillater, se lisens for\n" +"detaljer.\n" + +#: src/trader.c:308 +#, c-format +msgid "%s: Try `%s --help' for more information.\n" +msgstr "%s: Prøv «%s --help» for mer informasjon.\n" + +#: src/trader.c:311 +#, c-format +msgid "Usage: %s [OPTION ...] [GAME]\n" +msgstr "Bruksmåte: %s [VALG ...] [SPILL]\n" + +#: src/trader.c:312 +#, c-format +msgid "" +"Play Star Traders, a simple game of interstellar trading.\n" +"\n" +msgstr "" +"Spill Star Traders, et enkelt spill med interstellar handel.\n" +"\n" + +#: src/trader.c:315 +#, c-format +msgid "" +"Options:\n" +" -V, --version output version information and exit\n" +" -h, --help display this help and exit\n" +" --no-color don't use color for displaying text\n" +" --max-turn=NUM set the number of turns to NUM\n" +"\n" +msgstr "" +"Valg:\n" +" -V, --version vis versjonsinformasjon og avslutt\n" +" -h, --help vis denne hjelpen og avslutt\n" +" --no-color ikke bruk farger for visning av tekst\n" +" --max-turn=NUM sette antall runder til NUM\n" +"\n" + +#: src/trader.c:322 +#, c-format +msgid "" +"If GAME is specified as a number between 1 and 9, load and continue\n" +"playing that game. If GAME is not specified, start a new game.\n" +"\n" +msgstr "" +"Hvis SPILL er angitt som et tall mellom 1 og 9, last og fortsette med\n" +"å spille det spillet. Hvis SPILL ikke er angitt, start nytt spill.\n" +"\n" + +#. TRANSLATORS: The first %s is the proper name of the package +#. author, John Zaitseff [IPA d͡ʒɒn ˈzaɪ̯t͡səf]; the second %s is +#. the e-mail address for reporting bugs. Please add ANOTHER +#. line with the (translated) text "Report translation bugs to +#.
\n", with ADDRESS replaced with either an e-mail +#. address or web URL for reporting bugs in your translation. +#: src/trader.c:334 +#, c-format +msgid "Report bugs to %s <%s>.\n" +msgstr "" +"Rapporter feil, på engelsk, til %s <%s>.\n" +"Oversettelsesfeil kan rapporteres til .\n" + +#. TRANSLATORS: %s is the e-mail address for reporting bugs. As +#. with the previous string, please add ANOTHER line with the +#. (translated) text "Report translation bugs to
\n", +#. with ADDRESS replaced with either an e-mail address or web URL +#. for reporting bugs in your translation. +#: src/trader.c:341 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Rapporter feil, på engelsk, til <%s>.\n" +"Oversettelsesfeil kan rapporteres til .\n" + +#. TRANSLATORS: The first %s is for packagers and may be +#. something like "Debian". +#: src/trader.c:346 +#, c-format +msgid "Report %s bugs to <%s>.\n" +msgstr "Rapporter %s feil til <%s>.\n" + +#: src/trader.c:349 +#, c-format +msgid "Star Traders home page: <%s>.\n" +msgstr "Star Traders hjemmeside: <%s>.\n" + +#. TRANSLATORS: The eight company names do NOT have to be literal +#. translations of the English names. In fact, if possible, the +#. names should start with successive letters of your alphabet (in +#. English, for example, "A" to "H"), and, ideally, be related to +#. constellations or stars in our galaxy. No company name should be +#. more than 24 characters (column positions, to be precise) long. +#: src/globals.c:47 +msgid "Altair Starways" +msgstr "Altair Starways" + +#: src/globals.c:48 +msgid "Betelgeuse, Ltd" +msgstr "Betelgeuse A/S" + +#: src/globals.c:49 +msgid "Capella Freight Co" +msgstr "Capella Freight A/S" + +#: src/globals.c:50 +msgid "Denebola Shippers" +msgstr "Denebola Shippers" + +#: src/globals.c:51 +msgid "Eridani Expediters" +msgstr "Eridani Expediters" + +#: src/globals.c:52 +msgid "Fornax Express" +msgstr "Fornax Express" + +#: src/globals.c:53 +msgid "Gemeni Inc" +msgstr "Gemeni A/S" + +#: src/globals.c:54 +msgid "Hercules and Co" +msgstr "Hercules and Co" + +#. TRANSLATORS: This string specifies the keycodes (keyboard input +#. codes) used to enter the Stock Transaction window for each +#. company. There must be exactly eight characters, one for each +#. company in order, before the ASCII vertical line "|"; these must +#. be EITHER all in upper-case or all in lower-case. If at all +#. possible, these should be successive letters in your alphabet (in +#. English, "A" to "H"). Do NOT use digits or control characters. +#. Do not change or translate anything after the vertical line. +#: src/globals.c:68 +msgid "ABCDEFGH|input|Companies" +msgstr "ABCDEFGH|input|Companies" + +#. TRANSLATORS: This string specifies the keycodes used to select a +#. game move. There must be exactly 20 characters, one for each +#. move, before the ASCII vertical line "|"; these must be EITHER all +#. in upper-case or all in lower-case. If at all possible, these +#. should be successive letters in your alphabet. Do NOT use digits +#. or control characters. Do not change or translate anything after +#. the vertical line. +#: src/globals.c:80 +msgid "ABCDEFGHIJKLMNOPQRST|input|GameMoves" +msgstr "ABCDEFGHIJKLMNOPQRST|input|GameMoves" + +#. TRANSLATORS: This string is used to display the galaxy map to +#. screen. There must be exactly 11 characters before the ASCII +#. vertical line. The first ("." in English) is used for empty +#. space, the second ("+") for outposts, the third ("*") for stars, +#. the remaining for the eight companies. Do not change or translate +#. anything after the vertical line. Double-width characters ARE +#. handled correctly. +#: src/globals.c:92 +msgid ".+*ABCDEFGH|output|MapVals" +msgstr ".+*ABCDEFGH|output|MapVals" + +#. TRANSLATORS: This string is used to display the game moves +#. (choices). There must be exactly 20 characters (NUMBER_MOVES) +#. before the ASCII vertical line. The first character corresponds +#. to the first character in the "input|GameMoves" string, and so on. +#. Do not change or translate anything after the vertical line. +#. Double-width characters ARE handled correctly. +#: src/globals.c:103 +msgid "abcdefghijklmnopqrst|output|GameMoves" +msgstr "abcdefghijklmnopqrst|output|GameMoves" + +#. TRANSLATORS: The ordinal strings "1st" to "8th" are used in the +#. Game Winner dialog box at the end of the game. If ordinals depend +#. on the gender of the player, it may be simpler to list cardinal +#. numbers instead (eg, "No. 1"). Up to five characters are allowed +#. (see ORDINAL_COLS in src/intf.h). +#: src/globals.c:114 +msgid "1st" +msgstr "1." + +#: src/globals.c:115 +msgid "2nd" +msgstr "2." + +#: src/globals.c:116 +msgid "3rd" +msgstr "3." + +#: src/globals.c:117 +msgid "4th" +msgstr "4." + +#: src/globals.c:118 +msgid "5th" +msgstr "5." + +#: src/globals.c:119 +msgid "6th" +msgstr "6." + +#: src/globals.c:120 +msgid "7th" +msgstr "7." + +#: src/globals.c:121 +msgid "8th" +msgstr "8." + +#: src/game.c:117 src/game.c:152 +#, c-format +msgid "Loading game %d... " +msgstr "Laster spill %d... " + +#: src/game.c:226 +#, c-format +msgid " First Player " +msgstr " Første spiller " + +#: src/game.c:227 +#, c-format +msgid "The first player to go is ^{%ls^}." +msgstr "Spilleren som begynner er ^{%ls^}." + +#. TRANSLATORS: The keycode should be modified to +#. match that (or those) specified with msgctxt +#. "input|ContinueGame". +#: src/game.c:259 +#, c-format +msgid "Enter number of players [^{1^}-^{%d^}] or ^{^} to continue a game: " +msgstr "Angi antall spillere [^{1^}-^{%d^}] eller ^{^} for å fortsette et spill: " + +#. TRANSLATORS: This string specifies the keycodes used to continue a +#. game; these must NOT contain any numeric digit from 1 to 9. The +#. first character (keyboard input code) is used to print the user's +#. response if one of those keys is pressed. Both upper and +#. lower-case versions should be present. +#: src/game.c:276 +msgctxt "input|ContinueGame" +msgid "Cc" +msgstr "Ff" + +#: src/game.c:341 src/move.c:399 +#, c-format +msgid "Enter game number [^{1^}-^{9^}] or ^{^} to cancel: " +msgstr "Tast inn spill nummer [^{1^}-^{9^}] eller ^{^} for å avbryte: " + +#: src/game.c:406 +#, c-format +msgid "Please enter your name: " +msgstr "Skriv inn navnet ditt: " + +#: src/game.c:425 +#, c-format +msgid "Do you need any instructions? [^{Y^}/^{N^}] " +msgstr "Trenger du noen instruksjoner? [^{J^}/^{N^}] " + +#: src/game.c:443 +#, c-format +msgid " Enter Player Names " +msgstr " Angi Spillernavn " + +#: src/game.c:451 +#, c-format, range: 1..8 +msgid "Player %d: " +msgstr "Spiller %d: " + +#: src/game.c:529 +#, c-format +msgid "Does any player need instructions? [^{Y^}/^{N^}] " +msgstr "Trenger noen av deltakere instruksjoner? [^{J^}/^{N^}] " + +#: src/game.c:563 +#, c-format +msgid " Game Over " +msgstr " Spillet er slutt " + +#: src/game.c:564 +#, c-format +msgid "The game is over after one turn." +msgid_plural "The game is over after %d turns." +msgstr[0] "Spillet er over etter en runde." +msgstr[1] "Spillet er over etter %d runder." + +#: src/game.c:575 +#, c-format +msgid " Total Value " +msgstr " Total verdi " + +#: src/game.c:577 +#, c-format +msgid "Your total value was ^{%N^}." +msgstr "Din samlede verdi var ^{%N^}." + +#: src/game.c:588 +#, c-format +msgid "" +"The winner is ^{%ls^}\n" +"who is ^[*** BANKRUPT ***^]" +msgstr "" +"Vinneren er ^{%ls^}\n" +"som er ^[*** KONKURS ***^]" + +#: src/game.c:591 +#, c-format +msgid "" +"The winner is ^{%ls^}\n" +"with a value of ^{%N^}." +msgstr "" +"Vinneren er ^{%ls^}\n" +"med en verdi på ^{%N^}." + +#: src/game.c:597 +#, c-format +msgid " Game Winner " +msgstr " Vinner av spillet " + +#. TRANSLATORS: "Player" is used as a column title in a +#. table containing all player names. +#: src/game.c:606 src/move.c:868 +#, c-format +msgctxt "subtitle" +msgid "Player" +msgstr "Spiller" + +#. TRANSLATORS: "Total Value" refers to the total worth +#. (shares, cash and debt) of any given player. %ls is the +#. currency symbol of the current locale. +#: src/game.c:611 +#, c-format +msgctxt "subtitle" +msgid "Total Value (%ls)" +msgstr "Total verdi (%ls)" + +#: src/game.c:645 src/game.c:695 src/exch.c:100 +#, c-format +msgid "Player: ^{%ls^}" +msgstr "Spiller: ^{%ls^}" + +#: src/game.c:648 +#, c-format +msgid " Turn: ^{%d^} " +msgstr " Runde: ^{%d^} " + +#: src/game.c:649 +#, c-format +msgid " ^[*** Last Turn ***^] " +msgstr " ^[*** Forrige runde ***^] " + +#: src/game.c:693 +#, c-format +msgid " Stock Portfolio " +msgstr " Aksjeportefølje " + +#. TRANSLATORS: The current player is bankrupt (has no +#. shares or cash, ie, whose total value is zero) +#: src/game.c:702 +#, c-format +msgid "^[* * * B A N K R U P T * * *^]" +msgstr "^[* * * K O N K U R S * * *^]" + +#: src/game.c:717 src/exch.c:112 +#, c-format +msgid "No companies on the map" +msgstr "Ingen bedrifter på kartet" + +#. TRANSLATORS: "Company" is a two-line column label in +#. a table containing a list of companies. +#: src/game.c:725 src/exch.c:120 +#, c-format +msgctxt "subtitle" +msgid "" +"\n" +"Company" +msgstr "" +"\n" +"Firma" + +#. TRANSLATORS: "Ownership" is a two-line column label +#. in a table containing the current player's +#. percentage ownership in any given company. The +#. maximum column width is 10 characters (see +#. OWNERSHIP_COLS in src/intf.h). +#: src/game.c:732 +#, c-format +msgctxt "subtitle" +msgid "" +"Ownership\n" +"(%%)" +msgstr "" +"Eierskap\n" +"(%%)" + +#. TRANSLATORS: "Holdings" is a two-line column label +#. in a table containing the number of shares the +#. current player owns in any given company. The +#. maximum column width is 10 characters (see +#. STOCK_OWNED_COLS in src/intf.h). +#: src/game.c:739 +#, c-format +msgctxt "subtitle" +msgid "" +"Holdings\n" +"(shares)" +msgstr "" +"Beholdning\n" +"(aksjer)" + +#. TRANSLATORS: "Return" is a two-line column label in +#. a table containing the share return as a percentage +#. in any given company. The maximum column width is +#. 10 characters (see SHARE_RETURN_COLS in src/intf.h). +#: src/game.c:746 src/exch.c:141 +#, c-format +msgctxt "subtitle" +msgid "" +"Return\n" +"(%%)" +msgstr "" +"Utbytte\n" +"(%%)" + +#. TRANSLATORS: "Price per share" is a two-line column +#. label in a table containing the price per share in +#. any given company. %ls is the currency symbol in +#. the current locale. The maximum column width is 12 +#. characters INCLUDING the currency symbol (see +#. SHARE_PRICE_COLS in src/intf.h). +#: src/game.c:755 src/exch.c:150 +#, c-format +msgctxt "subtitle" +msgid "" +"Price per\n" +"share (%ls)" +msgstr "" +"Pris per\n" +"aksje (%ls)" + +#. TRANSLATORS: The "Total value", "Current cash", +#. "Current debt" and "Interest rate" labels MUST all be +#. the same length (ie, right-padded with spaces as +#. needed) and must have at least one trailing space so +#. that the display routines work correctly. The maximum +#. length of each label is 36 characters. +#. +#. Note that some of these labels are used for both the +#. Player Status window and the Trading Bank window. +#: src/game.c:796 +#, c-format +msgctxt "label" +msgid "Total value: " +msgstr "Total verdi: " + +#: src/game.c:800 src/exch.c:324 +#, c-format +msgctxt "label" +msgid "Current cash: " +msgstr "Nåværende kontanter: " + +#: src/game.c:807 src/exch.c:332 +#, c-format +msgctxt "label" +msgid "Current debt: " +msgstr "Eksisterende gjeld: " + +#: src/game.c:813 src/exch.c:337 +#, c-format +msgctxt "label" +msgid "Interest rate: " +msgstr "Rentesats: " + +#. TRANSLATORS: Each label may be up to 37 characters wide +#. (for <1> and <2>) or 38 characters wide (for <3> and +#. ). The sequences "^{" and "^}" change the +#. character rendition (attributes) and take up no space. +#: src/move.c:243 src/exch.c:182 +#, c-format +msgid "^{<1>^} Display stock portfolio" +msgstr "^{<1>^} Vis aksjeportefølje" + +#: src/move.c:245 +#, c-format +msgid "^{<2>^} Declare bankruptcy" +msgstr "^{<2>^} Gå konkurs" + +#: src/move.c:247 +#, c-format +msgid "^{<3>^} Save and end the game" +msgstr "^{<3>^} Lagre og avslutt spillet" + +#: src/move.c:249 +#, c-format +msgid "^{^} Quit the game" +msgstr "^{^} Avslutt spillet" + +#. TRANSLATORS: The maximum column width is 38 characters, +#. including the trailing space. The sequences "^{", "^}", +#. "^[" and "^]" do not take up any room. "%lc" takes up +#. either one or two columns, depending on the appropriate +#. "output|GameMoves" string in the current PO file. +#: src/move.c:258 +#, c-format +msgid "Select move [^[%lc^]-^[%lc^]/^{1^}-^{3^}/^{^}]: " +msgstr "Velg trekk [^[%lc^]-^[%lc^]/^{1^}-^{3^}/^{^}]: " + +#. TRANSLATORS: A game usually consists of +#. DEFAULT_MAX_TURN (50) turns. On each +#. turn, the computer randomly selects +#. NUMBER_MOVES (20) moves (positions on the +#. map); each player selects just one move +#. per turn. "Move" refers to the player's +#. choice. +#: src/move.c:295 +#, c-format +msgid "Move ^{%lc^}" +msgstr "Trekk ^{%lc^}" + +#: src/move.c:316 +#, c-format +msgid "^{<2>^} (Declare bankruptcy)" +msgstr "^{<2>^} (Gå konkurs)" + +#: src/move.c:325 +#, c-format +msgid "^{<3>^} (Save and end the game)" +msgstr "^{<3>^} (Lagre og avslutt spillet)" + +#: src/move.c:346 +#, c-format +msgid "^{^} (Quit the game)" +msgstr "^{^} (Avslutt spillet)" + +#: src/move.c:361 +#, c-format +msgid "Are you sure? [^{Y^}/^{N^}] " +msgstr "Er du sikker? [^{J^}/^{N^}] " + +#: src/move.c:378 src/move.c:456 +#, c-format +msgid "Saving game %d... " +msgstr "Lagrer spill %d... " + +#: src/move.c:686 src/move.c:694 src/move.c:1052 src/move.c:1089 +#, c-format +msgid " Bankruptcy Court " +msgstr " Skifteretten " + +#. TRANSLATORS: %ls is the player's name. +#: src/move.c:688 +#, c-format +msgid "%ls has been declared bankrupt by the Interstellar Trading Bank." +msgstr "%ls er erklært konkurs av Interstellar Handelsbank." + +#. TRANSLATORS: %ls is the player's name. +#: src/move.c:696 +#, c-format +msgid "%ls has declared bankruptcy." +msgstr "%ls har gått konkurs." + +#: src/move.c:764 +#, c-format +msgid " New Company " +msgstr " Nytt firma " + +#: src/move.c:765 +#, c-format +msgid "" +"A new company has been formed!\n" +"Its name is ^{%ls^}." +msgstr "" +"Et nytt firma er opprettet!\n" +"Navnet er ^{%ls^}." + +#: src/move.c:824 +#, c-format +msgid "" +"^{%ls^} has just merged into ^{%ls^}.\n" +"Please note the following transactions:\n" +msgstr "" +"^{%ls^} har nettopp fusjonert med ^{%ls^}.\n" +"Vær oppmerksom på følgende transaksjoner:\n" + +#: src/move.c:830 +#, c-format +msgid " Company Merger " +msgstr " Fusjon " + +#. TRANSLATORS: "Old stock" refers to the company that has +#. just ceased existence due to a merger. +#. +#. Note that the "Old stock" and "New stock" labels MUST be +#. the same length and must contain a trailing space for the +#. display routines to work correctly. The maximum length of +#. each label is 36 characters. +#: src/move.c:850 +#, c-format +msgctxt "label" +msgid "Old stock: " +msgstr "Gamle aksjer: " + +#. TRANSLATORS: "New stock" refers to the company that has +#. absorbed the other due to a merger. +#: src/move.c:861 +#, c-format +msgctxt "label" +msgid "New Stock: " +msgstr "Nye aksjer: " + +#. TRANSLATORS: "Bonus" refers to the bonus cash amount paid to +#. each player after two companies merge. %ls is the currency +#. symbol in the current locale. The maximum column width is +#. 12 characters INCLUDING the currency symbol (see +#. MERGE_BONUS_COLS in src/intf.h). +#: src/move.c:875 +#, c-format +msgctxt "subtitle" +msgid "Bonus (%ls)" +msgstr "Bonus (%ls)" + +#. TRANSLATORS: "Total" refers to the total number of shares in +#. the new company after a merger. The maximum column width is +#. 8 characters (see MERGE_TOTAL_STOCK_COLS in src/intf.h). +#: src/move.c:880 +#, c-format +msgctxt "subtitle" +msgid "Total" +msgstr "Totalt" + +#. TRANSLATORS: "New" refers to how many (new) shares each +#. player receives in the surviving company after a merger. +#. The maximum column width is 8 characters (see +#. MERGE_NEW_STOCK_COLS in src/intf.h). +#: src/move.c:887 +#, c-format +msgctxt "subtitle" +msgid "New" +msgstr "Ny" + +#. TRANSLATORS: "Old" refers to how many shares each player had +#. in the company ceasing existence. The maximum column width +#. is 8 characters (see MERGE_OLD_STOCK_COLS in src/intf.h). +#: src/move.c:893 +#, c-format +msgctxt "subtitle" +msgid "Old" +msgstr "Gammel" + +#. TRANSLATORS: %ls represents the company name. +#: src/move.c:1054 +#, c-format +msgid "" +"%ls has been declared bankrupt by the Interstellar Trading Bank.\n" +"\n" +"^{All assets have been taken to repay outstanding loans.^}" +msgstr "" +"%ls er erklært konkurs av Interstellar Handelsbank.\n" +"\n" +"^{Alle eiendeler er overtatt for å betale tilbake utestående lån.^}" + +#. TRANSLATORS: %ls represents the company name. +#: src/move.c:1078 +#, c-format +msgid "" +"%ls has been declared bankrupt by the Interstellar Trading Bank.\n" +"\n" +"^{The Bank has agreed to pay stock holders ^}%.2f%%^{ of the share value on each share owned.^}" +msgstr "" +"%ls er erklært konkurs av Interstellar Handelsbank.\n" +"\n" +"^{Banken har avtalt å betale aksjonærer ^}%.2f%%^{ av aksjeverdien på hver aksje.^}" + +#. TRANSLATORS: The label "Amount paid per share" +#. refers to payment made by the Interstellar +#. Trading Bank to each player upon company +#. bankruptcy. This label MUST be the same +#. length as "Old share value" and MUST have at +#. least one trailing space for the display +#. routines to work correctly. The maximum +#. length is 28 characters. +#: src/move.c:1106 +#, c-format +msgctxt "label" +msgid "Amount paid per share: " +msgstr "Betalt beløp per aksje: " + +#. TRANSLATORS: "Old share value" refers to the +#. share price of a company before it was forced +#. into bankruptcy by the Bank. This label must be +#. the same width as "Amount paid per share". +#: src/move.c:1114 +#, c-format +msgctxt "label" +msgid "Old share value: " +msgstr "Gammel aksjeverdi: " + +#: src/move.c:1197 src/move.c:1232 src/exch.c:321 +#, c-format +msgid " Interstellar Trading Bank " +msgstr " Interstellar Handelsbank " + +#: src/move.c:1199 +#, c-format +msgid "" +"You were forced to borrow %N\n" +"to cover losses from company shares." +msgstr "" +"Du ble tvunget til å låne %N\n" +"til å dekke tap fra selskapets aksjer." + +#: src/move.c:1234 +#, c-format +msgid "" +"Your debt has amounted to %N!\n" +"^{The Bank has impounded ^}%N^{ from your cash.^}" +msgstr "" +"Gjelden din er kommet opp i %N!\n" +"^{Banken har beslaglagt ^}%N^{ fra kontantbeholdningen.^}" + +#: src/exch.c:98 +#, c-format +msgid " Interstellar Stock Exchange " +msgstr " Interstellar Børs " + +#. TRANSLATORS: "Shares left" is a two-line column +#. label in a table containing the number of shares +#. left to be purchased in any given company. The +#. maximum column width is 10 characters (see +#. STOCK_LEFT_COLS in src/intf.h). +#: src/exch.c:127 +#, c-format +msgctxt "subtitle" +msgid "" +"Shares\n" +"left" +msgstr "" +"Aksjer\n" +"igjen" + +#. TRANSLATORS: "Shares issued" is a two-line column +#. label in a table containing the number of shares +#. already sold (ie, bought by all players) in any +#. given company. The maximum column width is 10 +#. characters (see STOCK_ISSUED_COLS in src/intf.h). +#: src/exch.c:134 +#, c-format +msgctxt "subtitle" +msgid "" +"Shares\n" +"issued" +msgstr "" +"Aksjer\n" +"utstedt" + +#. TRANSLATORS: Each label may be up to 37 characters wide +#. (for <1> and <2>) or 38 characters wide (for <3> and <4>). +#: src/exch.c:186 +#, c-format +msgid "^{<2>^} Display galaxy map" +msgstr "^{<2>^} Vis galaksekart" + +#: src/exch.c:188 +#, c-format +msgid "^{<3>^} Visit the Trading Bank" +msgstr "^{<3>^} Besøke Handelsbanken" + +#: src/exch.c:190 +#, c-format +msgid "^{<4>^} Exit the Stock Exchange" +msgstr "^{<4>^} Forlat børsen" + +#: src/exch.c:193 +#, c-format +msgid "Enter selection [^[Company letter^]/^{1^}-^{4^}]: " +msgstr "Angi valg [^[Firmabrev^]/^{1^}-^{4^}]: " + +#. TRANSLATORS: The "Total value", "Current cash", "Current +#. debt", "Interest rate" and "Credit limit" labels MUST all be +#. the same length (ie, right-padded with spaces as needed) and +#. must have at least one trailing space so that the display +#. routines work correctly. The maximum length of each label +#. is 36 characters. +#. +#. Note that some of these labels are used for both the Player +#. Status window and the Trading Bank window. +#: src/exch.c:351 +#, c-format +msgctxt "label" +msgid "Credit limit: " +msgstr "Kredittgrense: " + +#. TRANSLATORS: The "Borrow money", "Repay debt" and "Exit +#. from the Bank" menu options must all be the same length +#. (ie, padded with trailing spaces as required). The maximum +#. length is 72 characters. +#: src/exch.c:366 +#, c-format +msgid "^{<1>^} Borrow money " +msgstr "^{<1>^} Låne penger " + +#: src/exch.c:368 +#, c-format +msgid "^{<2>^} Repay debt " +msgstr "^{<2>^} Nedbetal gjeld " + +#: src/exch.c:370 +#, c-format +msgid "^{<3>^} Exit from the Bank" +msgstr "^{<3>^} Gå ut av banken" + +#: src/exch.c:373 +#, c-format +msgid "Enter selection [^{1^}-^{3^}]: " +msgstr "Angi valg [^{1^}-^{3^}]: " + +#: src/exch.c:426 +#, c-format +msgid " Insufficient Credit Limit " +msgstr " Utilstrekkelig kredittgrense " + +#: src/exch.c:427 +#, c-format +msgid "The Bank will not lend you any more money." +msgstr "Banken vil ikke låne deg mer penger." + +#: src/exch.c:447 +#, c-format +msgid "How much do you wish to borrow? " +msgstr "Hvor mye ønsker du å låne? " + +#: src/exch.c:479 +#, c-format +msgid " No Debt " +msgstr " Ingen gjeld " + +#: src/exch.c:480 +#, c-format +msgid "You have no debt to repay." +msgstr "Du har ingen gjeld å betale." + +#: src/exch.c:484 +#, c-format +msgid " No Cash " +msgstr " Ingen kontanter " + +#: src/exch.c:485 +#, c-format +msgid "You have no cash with which to repay the debt!" +msgstr "Du har ingen penger å nedbetale gjeld med!" + +#: src/exch.c:505 +#, c-format +msgid "How much do you wish to repay? " +msgstr "Hvor mye ønsker du å tilbakebetale? " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:581 +#, c-format +msgid " Stock Transaction in %ls " +msgstr " Aksjetransaksjon for %ls " + +#. TRANSLATORS: "Shares issued" represents the number of +#. shares already sold by the company to all players. +#. +#. Note that the labels "Shares issued", "Shares left", +#. "Price per share" and "Return" must all be the same length +#. and must have at least one trailing space for the output +#. routines to work correctly. The maximum length of each +#. label is 22 characters. +#: src/exch.c:592 +#, c-format +msgctxt "label|Stock A" +msgid "Shares issued: " +msgstr "Aksjer utstedt: " + +#. TRANSLATORS: "Shares left" is the number of shares that are +#. left to be purchased in the current company. +#: src/exch.c:600 +#, c-format +msgctxt "label|Stock A" +msgid "Shares left: " +msgstr "Aksjer igjen: " + +#. TRANSLATORS: "Price per share" is the cost of each share in +#. the current company. +#: src/exch.c:607 +#, c-format +msgctxt "label|Stock A" +msgid "Price per share: " +msgstr "Pris per aksje: " + +#. TRANSLATORS: "Return" is the share return as a percentage. +#: src/exch.c:613 +#, c-format +msgctxt "label|Stock A" +msgid "Return: " +msgstr "Utbytte: " + +#. TRANSLATORS: "Current holdings" is the number of shares the +#. current player owns in this particular company. +#. +#. Note that the labels "Current holdings", "Percentage owned" +#. and "Current cash" MUST all be the same length and contain at +#. least one trailing space for the display routines to work +#. correctly. The maximum length of each label is 18 +#. characters. +#: src/exch.c:626 +#, c-format +msgctxt "label|Stock B" +msgid "Current holdings: " +msgstr "Aksjeportefølge: " + +#. TRANSLATORS: "Percentage owned" is the current player's +#. percentage ownership in this particular company. +#: src/exch.c:633 +#, c-format +msgctxt "label|Stock B" +msgid "Percentage owned: " +msgstr "Eierandel: " + +#: src/exch.c:638 +#, c-format +msgctxt "label|Stock B" +msgid "Current cash: " +msgstr "Kontanter: " + +#. TRANSLATORS: Each label may be up to 35 characters wide +#. (for <1> and <2>) or 36 characters wide (for <3> and <4>). +#: src/exch.c:651 +#, c-format +msgid "^{<1>^} Buy stock from company" +msgstr "^{<1>^} Kjøp aksjer fra selskap" + +#: src/exch.c:653 +#, c-format +msgid "^{<2>^} Sell stock back to company" +msgstr "^{<2>^} Selg aksjer tilbake til selskap" + +#: src/exch.c:655 +#, c-format +msgid "^{<3>^} Bid company to issue more shares" +msgstr "^{<3>^} Be firmaet utstede flere aksjer" + +#: src/exch.c:657 +#, c-format +msgid "^{<4>^} Exit to the Stock Exchange" +msgstr "^{<4>^} Forlat børsen" + +#: src/exch.c:660 +#, c-format +msgid "Enter selection [^{1^}-^{4^}]: " +msgstr "Angi valg [^{1^}-^{4^}]: " + +#: src/exch.c:716 +#, c-format +msgid " No Shares Available " +msgstr " Ingen aksjer tilgjengelig " + +#: src/exch.c:717 +#, c-format +msgid "No more shares are available for purchase." +msgstr "Ingen flere aksjer er tilgjengelig for kjøp." + +#: src/exch.c:721 +#, c-format +msgid " Insufficient Cash " +msgstr " Ikke nok penger " + +#: src/exch.c:722 +#, c-format +msgid "" +"You do not have enough cash\n" +"to purchase additional shares." +msgstr "" +"Du har ikke nok penger\n" +"til å kjøpe flere aksjer." + +#: src/exch.c:733 +#, c-format +msgid "You can purchase ^{one^} share." +msgid_plural "You can purchase up to ^{%'ld^} shares." +msgstr[0] "Du kan kjøpe ^{en^} aksje." +msgstr[1] "Du kan kjøpe opptil ^{%'ld^} aksjer." + +#: src/exch.c:739 +#, c-format +msgid "How many shares do you wish to purchase? " +msgstr "Hvor mange aksjer ønsker du å kjøpe? " + +#: src/exch.c:760 +#, c-format +msgid " No Shares " +msgstr " Ingen aksjer " + +#: src/exch.c:761 +#, c-format +msgid "You do not have any shares to sell." +msgstr "Du har ingen aksjer å selge." + +#: src/exch.c:768 +#, c-format +msgid "You can sell ^{one^} share." +msgid_plural "You can sell up to ^{%'ld^} shares." +msgstr[0] "Du kan selge ^{en^} aksje." +msgstr[1] "Du kan selge opptil ^{%'ld^} aksjer." + +#: src/exch.c:774 +#, c-format +msgid "How many shares do you wish to sell? " +msgstr "Hvor mange aksjer ønsker du å selge? " + +#: src/exch.c:802 +#, c-format +msgid " No Shares Issued " +msgstr " Ingen aksjer utstedt " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:804 +#, c-format +msgid "" +"%ls has refused\n" +"to issue more shares." +msgstr "" +"%ls har avslått\n" +"å utstede flere aksjer." + +#: src/exch.c:809 +#, c-format +msgid " Shares Issued " +msgstr " Aksjer utstedt " + +#. TRANSLATORS: %ls represents the company name. +#: src/exch.c:811 +#, c-format +msgid "" +"%ls has issued\n" +"^{one^} more share." +msgid_plural "" +"%ls has issued\n" +"^{%'ld^} more shares." +msgstr[0] "" +"%ls har utstedt\n" +"^{en^} ny aksje." +msgstr[1] "" +"%ls har utstedt\n" +"^{%'ld^} nye aksjer." + +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 +#, c-format +msgid "%s: missing field on line %d" +msgstr "%s: manglende felt på linje %d" + +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 +#, c-format +msgid "%s: illegal field on line %d" +msgstr "%s: ulovlig felt på linje %d" + +#: src/fileio.c:51 +#, c-format +msgid "%s: illegal field on line %d: `%s'" +msgstr "%s: ugyldig felt på linje %d: «%s»" + +#: src/fileio.c:55 +#, c-format +msgid "%s: illegal value on line %d: `%s'" +msgstr "%s: ugyldig verdi på linje %d: «%s»" + +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 +#, c-format +msgid "%s: illegal value on line %d" +msgstr "%s: ugyldig verdi på linje %d" + +#: src/fileio.c:98 +#, c-format +msgid "%s: illegal characters on line %d" +msgstr "%s: ugyldig tegn på linje %d" + +#: src/fileio.c:183 +#, c-format +msgid "%s: could not convert string" +msgstr "%s: kunne ikke konvertere streng" + +#: src/fileio.c:257 +#, c-format +msgid " Game Not Found " +msgstr " Spill ikke funnet " + +#: src/fileio.c:258 +#, c-format +msgid "Game %d has not been saved to disk." +msgstr "Spillet %d er ikke lagret på disken." + +#: src/fileio.c:265 +#, c-format +msgid " Game Not Loaded " +msgstr " Spill ikke lastet " + +#: src/fileio.c:266 +#, c-format +msgid "" +"Game %d could not be loaded from disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"Spillet %d kunne ikke lastes fra disk.\n" +"\n" +"^{Fil %s: %s^}" + +#: src/fileio.c:319 +#, c-format +msgid "%s: missing header in game file" +msgstr "%s: mangler topptekst i spillfilen" + +#: src/fileio.c:322 +#, c-format +msgid "%s: not a valid game file" +msgstr "%s: ikke en gyldig spillfil" + +#: src/fileio.c:325 src/fileio.c:332 +#, c-format +msgid "%s: missing subheader in game file" +msgstr "%s: mangler undertittel i spillfilen" + +#: src/fileio.c:328 +#, c-format +msgid "%s: saved under a different version of Star Traders" +msgstr "%s: lagret under en annen versjon av Star Traders" + +#: src/fileio.c:335 +#, c-format +msgid "%s: saved under an incompatible character encoding" +msgstr "%s: lagret med en inkompatibel tegnkoding" + +#: src/fileio.c:343 +#, c-format +msgid "%s: illegal or missing field on line %d" +msgstr "%s: ulovlig eller manglende felt på linje %d" + +#: src/fileio.c:479 src/fileio.c:501 +#, c-format +msgid " Game Not Saved " +msgstr " Spill ikke lagret " + +#: src/fileio.c:480 +#, c-format +msgid "" +"Game %d could not be saved to disk.\n" +"\n" +"^{Directory %s: %s^}" +msgstr "" +"Spillet %d kunne ikke lagres til disk.\n" +"\n" +"^{Mappe %s: %s^}" + +#: src/fileio.c:502 +#, c-format +msgid "" +"Game %d could not be saved to disk.\n" +"\n" +"^{File %s: %s^}" +msgstr "" +"Spillet %d kunne ikke lagres til disken.\n" +"\n" +"^{Fil %s: %s^}" + +#. TRANSLATORS: The help text for Star Traders is marked up using a +#. custom mark-up format NOT used anywhere else in the source code. +#. +#. Each string is a single page of text that is displayed in an area 76 +#. columns wide by 16 lines high. Each line is delimited by "\n". NO +#. word-wrapping is performed: you must place the "\n" characters in the +#. appropriate place. Ideally, each line within the string should be +#. also (manually) space-justified or centred. TAB characters and other +#. control codes must NOT be used. If a string starts with "@" as the +#. very first character, that string is ignored (as are all strings +#. following): this allows a variable number of help text pages (from +#. one to ten). Multibyte strings are handled correctly (even those +#. requiring shift sequences!). +#. +#. The ASCII circumflex accent character "^" switches to a different +#. character rendition (also called attributes), depending on the +#. character following the "^": +#. +#. ^^ - Print the circumflex accent (ASCII code U+005E) +#. ^N - Switch to using the normal character rendition +#. ^B - Switch to using the bold character rendition +#. ^H - Switch to using the highlight character rendition +#. ^K - Switch to using the keycode character rendition (such as used for "") +#. ^e - Switch to using the character rendition used for empty space +#. ^o - Switch to using the character rendition used for outposts +#. ^s - Switch to using the character rendition used for stars +#. ^c - Switch to using the character rendition used for companies +#. ^k - Switch to using the character rendition used for keyboard choices on the galaxy map +#. +#. The help text parsing routines also understand the following "value +#. escapes" introduced by the ASCII tilde character "~"; these act like +#. "%" conversion specifiers in printf(): +#. +#. ~~ - Print the tilde character (ASCII code U+007E) [*] +#. ~x - Print the width of the galaxy map (MAX_X) [**] +#. ~y - Print the height of the galaxy map (MAX_Y) [**] +#. ~m - Print the number of moves available (NUMBER_MOVES) [**] +#. ~c - Print the maximum number of companies that can be formed (MAX_COMPANIES) [*] +#. ~t - Prints the default number of turns in the game (DEFAULT_MAX_TURN) [**] +#. ~1 to ~9 - Print the keycode for the N-th choice of move [***] +#. ~M - Print the keycode for the last choice of move [***] +#. ~A to ~H - Print the character used to represent the company on the galaxy map [***] +#. ~. - Print the character used to represent empty space on the map [***] +#. ~+ - Print the character used to represent outposts on the map [***] +#. ~* - Print the character used to represent stars on the map [***] +#. +#. [*] Takes one character space (column space) in the output +#. [**] Takes two column spaces in the output +#. [***] Takes one or two column spaces in the output, depending on the +#. appropriate strings in the current PO file. +#. +#. Note that all keycodes and map representation characters use locale- +#. specific characters; double-width characters ARE supported. Note +#. also that the tilde value escapes do NOT change the current character +#. rendition: a circumflex accent escape is needed for that. For +#. example, to display the first choice of move as it would be shown on +#. the galaxy map, use something like "^k~1^N" (a six-character sequence +#. that would translate to just one character (or maybe two) in the +#. output text). +#. +#. Formatting the help text is probably the most complicated and tedious +#. part of translating Star Traders. The author and maintainer of this +#. game is more than happy to help you with this task: if you are able +#. to provide a translation, even if it is not formatted correctly, the +#. maintainer will perform the necessary adjustments for word-wrapping +#. and justification. In addition, remember that you have up to 10 +#. pages in which to display your help text: the translation does not +#. need to correspond exactly to the original text. This text will not +#. be changing any time soon! +#. +#: src/help.c:113 +msgid "" +"^BStar Traders^N is a simple game of interstellar trading. The object of the\n" +"game is to amass the greatest amount of wealth possible. This is done by\n" +"creating interstellar shipping lanes, expanding them and buying shares in\n" +"the companies controlling them. Shares appreciate in value as company\n" +"operations expand. In addition, the return on each share (as a percentage)\n" +"also changes. Players may also borrow from the Interstellar Trading Bank to\n" +"finance additional purchases on the Stock Exchange.\n" +"\n" +"The map of the galaxy is represented by a ^B~x^N x ^B~y^N grid. A typical section\n" +"of it may be:\n" +"\n" +" ^e ~. ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ~. ~. ^N ^e ~. ^N represents ^Bempty space^N,\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ~. ~. ~. ^N ^s ~* ^N represents a ^Bstar^N.\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +msgstr "" +"^BStar Traders^N er et enkelt spill med interstellar handel. Målet med spillet\n" +"er å samle størst mulig formue. Dette gjøres ved å skape interstellare\n" +"seilingsleder, utvide dem og kjøpe aksjer i selskapene for å kontrollere\n" +"dem. Aksjer stiger i verdi ettesom selskapsoperasjonene utvides. Dessuten,\n" +"avkastningen på hver del (i prosent) endres også. Spillere kan også låne fra\n" +"Interstellar Handelsbank for å finansiere flere kjøp på børsen.\n" +"\n" +"Kartet over galaksen er representert ved en ^B~x^N x ^B~y^N rutenett. En typisk\n" +"seksjon kan være:\n" +"\n" +" ^e ~. ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ~. ~. ^N ^e ~. ^N forestiller ^Btomrom^N,\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ~. ~. ~. ^N ^s ~* ^N forestiller en ^Bstjerne^N.\n" +" ^e ~. ~. ~. ~. ~. ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" + +#: src/help.c:132 +msgid "" +"The computer selects ^B~m^N moves (labeled ^k~1^N to ^k~M^N) at random, and places these\n" +"on the map. To select any of the highlighted positions, press that letter.\n" +"For example, some of the moves on the map may be:\n" +"\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^k~3^e ~. ~. ~. ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^k~5^e ~. ~. ^N Moves ^k~1^N to ^k~5^N shown.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +"\n" +"\n" +"Selecting a position that is ^Bnot^N next to a star (such as moves ^k~1^N, ^k~3^N or ^k~5^N)\n" +"will set up an ^Boutpost^N, not belonging to any company. Thus, if move ^k~3^N is\n" +"selected on the above map, a ^o ~+ ^N would be placed at that position.\n" +msgstr "" +"Datamaskinen velger ^B~m^N trekk (merket ^k~1^N to ^k~M^N) vilkårlig, og legger disse på\n" +"kartet. For å velge noen av de markerte stedene, trykk på bokstaven. Noen av\n" +"trekkene på kartet kan for eksempel være:\n" +"\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^k~3^e ~. ~. ~. ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^k~5^e ~. ~. ^N Trekk ^k~1^N til ^k~5^N vist.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ~. ^N\n" +"\n" +"\n" +"Å velge en posisjon som ^Bikke^N er ved siden av en stjerne (trekk som ^k~1^N, ^k~3^N\n" +"eller ^k~5^N) vil sette opp en ^Butpost^N, som ikke tilhører noe selskap. Slik at\n" +"hvis trekk ^k~3^N er valgt på kartet ovenfor vil ^o ~+ ^N bli plassert ved den\n" +"posisjonen.\n" + +#: src/help.c:150 +msgid "" +"If, on the other hand, a position next to a star (or another outpost) is\n" +"selected, a ^Bcompany^N would be formed and its letter would appear on the map.\n" +"As a reward for creating the company, you are granted the first five shares.\n" +"Up to ^B~c^N companies can be created in this way.\n" +"\n" +"If a position next to an existing company is selected, the company would\n" +"expand its operations by one square. This increases the cost of its shares\n" +"and hence your return. Thus, if the map was as shown below, selecting ^k~6^N\n" +"or ^k~8^N increases Company ^B~B^N's shipping lane:\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~6^N or ^k~8^N increases Company ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +msgstr "" +"Hvis på den annen side en posisjon ved siden av en stjerne (eller annen\n" +"utpost) er valgt, vil et ^Bfirma^N bli dannet og dets bokstav vises på kartet.\n" +"Som en belønning for å skape firmaet får du de første fem aksjene. Opp til ^B~c^N\n" +"firmaer kan opprettes på denne måten.\n" +"\n" +"Hvis en posisjon ved siden av et eksisterende selskap er valgt vil selskapet\n" +"utvide sin virksomhet med én rute. Dette øker kostnadene til dets aksjer og\n" +"dermed avkastningen. Dermed, hvis kartet er som vist nedenfor, å velge ^k~6^N\n" +"eller ^k~8^N øker selskapet ^B~B^Ns skipslei:\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Trekk ^k~6^N eller ^k~8^N øker selskapet ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" + +#: src/help.c:168 +msgid "" +"Selecting positions next to stars increases the value of your stock by about\n" +"five times as much as an extension not next to a star. Thus move ^k~6^N should\n" +"be preferred to move ^k~8^N.\n" +"\n" +" ^e ^c~C^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ^k~1^e ^o~+^e ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~6^N is preferred to ^k~8^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +"\n" +"You may also expand any company by selecting positions next to outposts.\n" +"Such outposts will be swallowed up by that company. Thus, move ^k~1^N will\n" +"extend Company ^B~C^N by ^Btwo^N squares. As a bonus, outposts next to stars are\n" +"more valuable: the company's share price will increase by a greater amount\n" +"than it would for outposts not next to stars.\n" +msgstr "" +"Å velge posisjoner ved siden av stjerner øker verdien av din beholdning med\n" +"ca. fem ganger så mye som en forlengelse som ikke er ved siden av en\n" +"stjerne. Derfor bør trekk ^k~6^N foretrekkes fremfor ^k~8^N.\n" +"\n" +" ^e ^c~C^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ^k~1^e ^o~+^e ~. ^o~+^e ~. ~. ^k~6^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ~. ~. ^c~B^e ^c~B^e ^c~B^e ^N Trekk ^k~6^N foretrekkes fremfor ^k~8^N.\n" +" ^e ~. ^k~2^e ~. ~. ^k~4^e ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ~. ~. ^k~8^e ^N\n" +"\n" +"Du kan også utvide ethvert selskap ved å velge posisjoner ved siden av\n" +"utposter. Slike utposter vil bli slukt av det selskapet. Dermed vil trekk ^k~1^N\n" +"utvide selskap ^B~C^N med ^Bto^N kvadrater. Som en bonus er utposter ved siden av\n" +"stjernene mer verdifulle: selskapets aksjekurs vil øke med en større mengde\n" +"enn det ville gjort for utposter som ikke er ved siden av stjerner.\n" + +#: src/help.c:186 +msgid "" +"If two companies are separated on the map by only one square, then they can\n" +"be ^Bmerged^N into one company by selecting that position (if available). For\n" +"example, on the map below, companies ^B~A^N and ^B~B^N can be merged by selecting ^k~5^N.\n" +"When this occurs, the company with the greater assets value takes over the\n" +"other one. Here, Company ^B~B^N might take over Company ^B~A^N. Company ^B~A^N ceases to\n" +"exist, although it may reappear as an entirely new company at a later stage.\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^c~A^e ^c~A^e ^k~5^e ^c~B^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ^c~A^e ~. ^c~B^e ^c~B^e ^c~B^e ^N Move ^k~5^N merges companies ^B~A^N and ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ~. ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ^o~+^e ~. ~. ^N\n" +"\n" +"When companies merge, players are granted shares in the dominant company\n" +"proportional to the amount owned in the old company. As well, a cash bonus\n" +"is also paid, proportional to the percentage of the old company owned.\n" +msgstr "" +"Hvis to selskaper skilles på kartet ved bare én rute, kan de ^Bfusjoneres^N i\n" +"ett selskap ved å velge den posisjonen (hvis tilgjengelig). For eksempel på\n" +"kartet nedenfor kan bedriftene ^B~A^N og ^B~B^N fusjoneres ved å velge ^k~5^N. Når dette\n" +"skjer tar selskapet med størst aktiva over det andre. Her kan selskap ^B~B^N ta\n" +"over selskap ^B~A^N. Selskap ^B~A^N opphører å eksistere, selv om det kan dukke opp\n" +"igjen som en helt nytt selskap på et senere tidspunkt.\n" +"\n" +" ^e ^k~1^e ~. ^s~*^e ~. ~. ~. ^s~*^e ^s~*^e ~. ^N\n" +" ^e ~. ~. ~. ^c~A^e ^c~A^e ^k~5^e ^c~B^e ~. ~. ^N\n" +" ^e ~. ^s~*^e ~. ~. ^c~A^e ~. ^c~B^e ^c~B^e ^c~B^e ^N Trekk ^k~5^N fusjonerer selskapene ^B~A^N og ^B~B^N.\n" +" ^e ~. ^k~2^e ~. ~. ~. ~. ~. ^s~*^e ^c~B^e ^N\n" +" ^e ~. ~. ~. ~. ^s~*^e ~. ^o~+^e ~. ~. ^N\n" +"\n" +"Når selskaper fusjonerer blir spillerne tildelt aksjer i det dominerende\n" +"selskapet proporsjonal med mengden eid i det gamle selskapet. En kontant-\n" +"bonus blir og utbetalt, proporsjonalt med eierandelen i det gamle selskapet.\n" + +#: src/help.c:205 +msgid "" +"Once you select your move, you enter the ^BInterstellar Stock Exchange^N. Here\n" +"you may purchase shares, sell them, borrow from the Trading Bank or repay\n" +"some of your debt (if applicable). Note that each company issues a limited\n" +"number of shares -- you cannot go on buying for ever! You may, however, bid\n" +"for more shares to be issued. You have a better chance of succeeding if you\n" +"own a larger proportion of the company.\n" +"\n" +"The game usually ends after ^B~t^N turns. However, you may end the game sooner\n" +"by pressing ^K^N when asked to select a move. As well, individual\n" +"players can declare themselves bankrupt at any time. If your debt is large\n" +"enough, the Bank may do this for you! If you do not complete your game in\n" +"the time you have available, you may save the game and continue it later.\n" +"\n" +"\n" +"The ^Bwinner of the game^N is the person with the greatest net worth (total\n" +"value of cash, stock and debt). ^HGood luck^N and may the best person win!\n" +msgstr "" +"Når du har valgt ditt trekk går du inn i ^BInterstellar Børs^N. Her kan du kjøpe\n" +"og selge aksjer, låne fra Handelsbanken eller tilbakebetale noe av gjelden\n" +"din (hvis det er aktuelt). Merk at hvert selskap utsteder et begrenset\n" +"antall aksjer — du kan ikke fortsette å kjøpe for alltid! Du kan imidlertid\n" +"by på flere aksjer som utstedes. Du har en bedre sjanse for å lykkes hvis du\n" +"eier en større andel av selskapet.\n" +"\n" +"Normalt slutter spillet etter ^B~t^N runder. Men du kan avslutte tidligere ved\n" +"å trykke ^K^N når anmodet om å velge et trekk. Individuelle spillere\n" +"kan erklære seg konkurs når som helst. Hvis gjelden er stor nok, kan banken\n" +"gjøre dette for deg! Hvis du ikke fullfører spillet i den tiden du har\n" +"tilgjengelig, kan du lagre spillet og fortsette senere.\n" +"\n" +"\n" +"^BVinneren av spillet^N er den personen med størst formue (totalverdi av\n" +"kontanter, aksjer og gjeld). ^HLykke til^N, må den beste vinne!\n" + +#: src/help.c:225 +msgid "@ Help text, page 7\n" +msgstr "@ Hjelpetekst, side 7\n" + +#: src/help.c:226 +msgid "@ Help text, page 8\n" +msgstr "@ Hjelpetekst, side 8\n" + +#: src/help.c:227 +msgid "@ Help text, page 9\n" +msgstr "@ Hjelpetekst, side 9\n" + +#: src/help.c:228 +msgid "@ Help text, page 10\n" +msgstr "@ Hjelpetekst, side 10\n" + +#: src/help.c:280 +#, c-format +msgid " How to Play " +msgstr " Slik spiller man " + +#. TRANSLATORS: The first %d is the current page number, +#. the second is the number of pages your help text takes +#. (6, in English). You can replace the second %d with a +#. fixed word, if you like. +#: src/help.c:286 +#, c-format +msgid "Page %d of %d" +msgstr "Side %d av %d" + +#. TRANSLATORS: The reason the user is not asked "Press any +#. key to continue" is historical: many, many people used to +#. ask "where is the key?" :-) +#: src/help.c:487 src/intf.c:3035 +#, c-format +msgid "[ Press to continue ] " +msgstr "[ Trykk for å fortsette ] " + +#. TRANSLATORS: The specific use of and +#. is not essential: you can use , +#. , , or instead of +#. , and almost any other key instead of +#. (other than , , , , +#. or <\>). +#: src/help.c:494 +#, c-format +msgid "[ Press to continue or for the previous page ] " +msgstr "[ Trykk for å fortsette eller for forrige side ] " + +#: src/intf.c:110 +#, c-format +msgid "%s: string has incorrect format: `%s'" +msgstr "%s: streng har feil format: «%s»" + +#: src/intf.c:126 +#, c-format +msgid "%s: character has illegal width: `%lc'" +msgstr "%s: tegn har ugyldig bredde: «%lc»" + +#: src/intf.c:434 +#, c-format +msgid "terminal size is too small (%d x %d required)" +msgstr "terminal størrelsen er for liten (%d x %d kreves)" + +#: src/intf.c:610 +#, c-format +msgid "Star Traders" +msgstr "Star Traders" + +#: src/intf.c:1265 +#, c-format +msgid "mkchstr_conv: NUL" +msgstr "mkchstr_conv: NUL" + +#: src/intf.c:1568 +#, c-format +msgid "mkchstr: `%s'" +msgstr "mkchstr: «%s»" + +#. TRANSLATORS: This string specifies the keycodes used to insert the +#. default value into the input string, if entered as the very first +#. character. Ideally, it should contain an easily-accessible +#. keycode that would NOT be used in ordinary input. Digits, ".", +#. ",", "+" and "-" are definitely NOT acceptable. +#: src/intf.c:2020 +msgctxt "input|DefaultValue" +msgid "=;" +msgstr "=;" + +#: src/intf.c:2034 src/intf.c:2079 +#, c-format +msgid "gettxline: illegal character in string: `%ls'" +msgstr "gettxline: ugyldig tegn i streng: «%ls»" + +#. TRANSLATORS: The strings with msgctxt "input|Yes" and +#. "input|No" contain the keycodes used to determine whether a +#. user is answering "Yes" or "No" in response to some question. +#. Both upper and lower-case versions should be present. +#: src/intf.c:2952 +msgctxt "input|Yes" +msgid "Yy" +msgstr "Jj" + +#: src/intf.c:2954 +msgctxt "input|No" +msgid "Nn" +msgstr "Nn" + +#. TRANSLATORS: The strings "Yes" and "No" are printed as a +#. response to user input in answer to questions like "Are you +#. sure? [Y/N] " +#: src/intf.c:3005 +msgctxt "answer" +msgid "Yes" +msgstr "Ja" + +#: src/intf.c:3007 +msgctxt "answer" +msgid "No" +msgstr "Nei" + +#: src/utils.c:378 src/utils.c:399 +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/utils.c:404 +msgid ": " +msgstr ": " + +#: src/utils.c:417 +#, c-format +msgid "out of memory" +msgstr "ikke mer minne" + +#: src/utils.c:1041 +#, c-format +msgid "xmbstowcs: `%s'" +msgstr "xmbstowcs: «%s»" + +#: src/utils.c:1081 +#, c-format +msgid "xwcrtomb: NUL" +msgstr "xwcrtomb: NUL" + +#: src/utils.c:1086 +#, c-format +msgid "xwcrtomb: `%lc'" +msgstr "xwcrtomb: «%lc»" + +#: lib/getopt.c:547 lib/getopt.c:576 +#, c-format +msgid "%s: option '%s' is ambiguous; possibilities:" +msgstr "%s: valget «%s» er flertydig; muligheter:" + +#: lib/getopt.c:624 lib/getopt.c:628 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: valget «--%s» tillater ikke et argument\n" + +#: lib/getopt.c:637 lib/getopt.c:642 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: valget «%c%s» tillater ikke argumenter\n" + +#: lib/getopt.c:685 lib/getopt.c:704 +#, c-format +msgid "%s: option '--%s' requires an argument\n" +msgstr "%s: valget «--%s» krever et argument\n" + +#: lib/getopt.c:742 lib/getopt.c:745 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: ukjent valg «--%s»\n" + +#: lib/getopt.c:753 lib/getopt.c:756 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: ukjent valg «%c%s»\n" + +#: lib/getopt.c:805 lib/getopt.c:808 +#, c-format +msgid "%s: invalid option -- '%c'\n" +msgstr "%s: ugyldig valg -- «%c»\n" + +#: lib/getopt.c:861 lib/getopt.c:878 lib/getopt.c:1088 lib/getopt.c:1106 +#, c-format +msgid "%s: option requires an argument -- '%c'\n" +msgstr "%s: valget krever et argument -- «%c»\n" + +#: lib/getopt.c:934 lib/getopt.c:950 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: valget «-W %s» er flertydig\n" + +#: lib/getopt.c:974 lib/getopt.c:992 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: valget «-W %s» tillater ikke argumenter\n" + +#: lib/getopt.c:1013 lib/getopt.c:1031 +#, c-format +msgid "%s: option '-W %s' requires an argument\n" +msgstr "%s: valget «-W %s» krever et argument\n" diff --git a/po/ru.po b/po/ru.po index 17bbe6b..8748392 100644 --- a/po/ru.po +++ b/po/ru.po @@ -2,23 +2,23 @@ # * * # * Russian Translations for Star Traders * # * Русский перевод для игры «Звёздные торговцы» * -# * Copyright (C) 1990-2012, John Zaitseff * +# * Copyright (C) 1990-2014, John Zaitseff * # * * # ************************************************************************* # # This file is distributed under the same license as the trader package. # # Contributors: -# John Zaitseff , 2011-12. +# John Zaitseff , 2011-14. # Vladimir B. Tsarkov , 2012. # Pavel Maryanov , 2012. # msgid "" msgstr "" -"Project-Id-Version: trader 7.4\n" +"Project-Id-Version: trader 7.5\n" "Report-Msgid-Bugs-To: J.Zaitseff@zap.org.au\n" -"POT-Creation-Date: 2012-05-09 13:57+1000\n" -"PO-Revision-Date: 2012-05-09 07:05+1000\n" +"POT-Creation-Date: 2014-05-23 19:00+1000\n" +"PO-Revision-Date: 2014-05-22 11:01+1000\n" "Last-Translator: Pavel Maryanov \n" "Language-Team: Russian \n" "Language: ru\n" @@ -1126,52 +1126,57 @@ msgstr[2] "" "Фирма %ls выпустила\n" "ещё ^{%'ld^} акций." -#: src/fileio.c:55 src/fileio.c:92 src/fileio.c:131 src/fileio.c:381 +#: src/fileio.c:43 src/fileio.c:83 src/fileio.c:126 src/fileio.c:387 #, c-format msgid "%s: missing field on line %d" msgstr "%s: отсутствующее поле в строке %d" -#: src/fileio.c:60 +#: src/fileio.c:47 src/fileio.c:87 src/fileio.c:130 src/fileio.c:390 src/fileio.c:393 +#, c-format +msgid "%s: illegal field on line %d" +msgstr "%s: неверное поле в строке %d" + +#: src/fileio.c:51 #, c-format msgid "%s: illegal field on line %d: `%s'" msgstr "%s: неверное поле в строке %d: «%s»" -#: src/fileio.c:64 +#: src/fileio.c:55 #, c-format msgid "%s: illegal value on line %d: `%s'" msgstr "%s: неверное значение в строке %d: «%s»" -#: src/fileio.c:96 src/fileio.c:135 src/fileio.c:393 +#: src/fileio.c:91 src/fileio.c:134 src/fileio.c:402 #, c-format msgid "%s: illegal value on line %d" msgstr "%s: неверное значение в строке %d" -#: src/fileio.c:103 +#: src/fileio.c:98 #, c-format msgid "%s: illegal characters on line %d" msgstr "%s: неверные символы в строке %d" -#: src/fileio.c:184 +#: src/fileio.c:183 #, c-format msgid "%s: could not convert string" msgstr "%s: невозможно преобразовать строку" -#: src/fileio.c:255 +#: src/fileio.c:257 #, c-format msgid " Game Not Found " msgstr " Игра не найдена " -#: src/fileio.c:256 +#: src/fileio.c:258 #, c-format msgid "Game %d has not been saved to disk." msgstr "Игра №%d не была сохранена." -#: src/fileio.c:263 +#: src/fileio.c:265 #, c-format msgid " Game Not Loaded " msgstr " Игра не загружена " -#: src/fileio.c:264 +#: src/fileio.c:266 #, c-format msgid "" "Game %d could not be loaded from disk.\n" @@ -1182,47 +1187,42 @@ msgstr "" "\n" "^{Файл %s: %s^}" -#: src/fileio.c:316 +#: src/fileio.c:319 #, c-format msgid "%s: missing header in game file" msgstr "%s: отсутствует заголовок в игровом файле" -#: src/fileio.c:319 +#: src/fileio.c:322 #, c-format msgid "%s: not a valid game file" msgstr "%s: неверный формат игрового файла" -#: src/fileio.c:322 src/fileio.c:329 +#: src/fileio.c:325 src/fileio.c:332 #, c-format msgid "%s: missing subheader in game file" msgstr "%s: отсутствует подзаголовок в игровом файле" -#: src/fileio.c:325 +#: src/fileio.c:328 #, c-format msgid "%s: saved under a different version of Star Traders" msgstr "%s: файл сохранён в другой версии игры «Звёздные торговцы»" -#: src/fileio.c:332 +#: src/fileio.c:335 #, c-format msgid "%s: saved under an incompatible character encoding" msgstr "%s: в файле используется неподдерживаемая кодировка символов" -#: src/fileio.c:340 +#: src/fileio.c:343 #, c-format msgid "%s: illegal or missing field on line %d" msgstr "%s: неверное поле или отсутствующее поле в строке %d" -#: src/fileio.c:384 -#, c-format -msgid "%s: illegal field on line %d" -msgstr "%s: неверное поле в строке %d" - -#: src/fileio.c:466 src/fileio.c:487 +#: src/fileio.c:479 src/fileio.c:501 #, c-format msgid " Game Not Saved " msgstr " Игра не сохранена " -#: src/fileio.c:467 +#: src/fileio.c:480 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1233,7 +1233,7 @@ msgstr "" "\n" "^{Папка %s: %s^}" -#: src/fileio.c:488 +#: src/fileio.c:502 #, c-format msgid "" "Game %d could not be saved to disk.\n" @@ -1645,31 +1645,31 @@ msgctxt "answer" msgid "No" msgstr "Нет" -#: src/utils.c:199 src/utils.c:220 +#: src/utils.c:378 src/utils.c:399 #, c-format msgid "%s: " msgstr "%s: " -#: src/utils.c:225 +#: src/utils.c:404 msgid ": " msgstr ": " -#: src/utils.c:238 +#: src/utils.c:417 #, c-format msgid "out of memory" msgstr "недостаточно памяти" -#: src/utils.c:571 +#: src/utils.c:1041 #, c-format msgid "xmbstowcs: `%s'" msgstr "xmbstowcs: «%s»" -#: src/utils.c:611 +#: src/utils.c:1081 #, c-format msgid "xwcrtomb: NUL" msgstr "xwcrtomb: NUL" -#: src/utils.c:616 +#: src/utils.c:1086 #, c-format msgid "xwcrtomb: `%lc'" msgstr "xwcrtomb: «%lc»" diff --git a/src/Makefile.am b/src/Makefile.am index 0c0830d..3c83e63 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,7 @@ ######################################################################### # # # Star Traders: A Game of Interstellar Trading # -# Copyright (C) 1990-2012, John Zaitseff # +# Copyright (C) 1990-2014, John Zaitseff # # # ######################################################################### diff --git a/src/README b/src/README index e0657d3..599f2bf 100644 --- a/src/README +++ b/src/README @@ -1,7 +1,7 @@ ************************************************************************** * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************** diff --git a/src/exch.c b/src/exch.c index 3cc784f..8dd08d2 100644 --- a/src/exch.c +++ b/src/exch.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/exch.h b/src/exch.h index c4d85f1..d09e1bf 100644 --- a/src/exch.h +++ b/src/exch.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/fileio.c b/src/fileio.c index 8a9dc50..5c77d70 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ @@ -32,31 +32,22 @@ /************************************************************************ -* Module-specific constants and macros * +* Module-specific macros * ************************************************************************/ -// Game loading and saving constants - -static const unsigned char game_file_crypt_key[] = { - 0x50, 0x52, 0x55, 0x59, 0x5A, 0x5C, 0x5F, - 0x90, 0x92, 0x95, 0x99, 0x9A, 0x9C, 0x9F, - 0xA0, 0xA2, 0xA5, 0xA9, 0xAA, 0xAC, 0xAF, - 0xD0, 0xD2, 0xD5, 0xD9, 0xDA, 0xDC, 0xDF -}; - -#define GAME_FILE_CRYPT_KEY_SIZE (sizeof(game_file_crypt_key) / sizeof(game_file_crypt_key[0])) - - // Macros used in load_game() #define load_game_scanf(_fmt, _var, _cond) \ do { \ - if (fgets(buf, BUFSIZE, file) == NULL) { \ + if (fgets(inbuf, BIGBUFSIZE, file) == NULL) { \ err_exit(_("%s: missing field on line %d"), \ filename, lineno); \ } \ - if (sscanf(unscramble(crypt_key, buf, BUFSIZE), _fmt "\n", \ - &(_var)) != 1) { \ + if (unscramble(buf, inbuf, BUFSIZE, crypt_key_p) == NULL) { \ + err_exit(_("%s: illegal field on line %d"), \ + filename, lineno); \ + } \ + if (sscanf(buf, _fmt "\n", &(_var)) != 1) { \ err_exit(_("%s: illegal field on line %d: `%s'"), \ filename, lineno, buf); \ } \ @@ -88,11 +79,15 @@ static const unsigned char game_file_crypt_key[] = { char *s; \ int len; \ \ - if (fgets(buf, BUFSIZE, file) == NULL) { \ + if (fgets(inbuf, BIGBUFSIZE, file) == NULL) { \ err_exit(_("%s: missing field on line %d"), \ filename, lineno); \ } \ - if (strlen(unscramble(crypt_key, buf, BUFSIZE)) == 0) { \ + if (unscramble(buf, inbuf, BUFSIZE, crypt_key_p) == NULL) { \ + err_exit(_("%s: illegal field on line %d"), \ + filename, lineno); \ + } \ + if (strlen(buf) == 0) { \ err_exit(_("%s: illegal value on line %d"), \ filename, lineno); \ } \ @@ -127,11 +122,15 @@ static const unsigned char game_file_crypt_key[] = { char *s; \ int len; \ \ - if (fgets(buf, BUFSIZE, file) == NULL) { \ + if (fgets(inbuf, BIGBUFSIZE, file) == NULL) { \ err_exit(_("%s: missing field on line %d"), \ filename, lineno); \ } \ - if (strlen(unscramble(crypt_key, buf, BUFSIZE)) == 0) { \ + if (unscramble(buf, inbuf, BUFSIZE, crypt_key_p) == NULL) { \ + err_exit(_("%s: illegal field on line %d"), \ + filename, lineno); \ + } \ + if (strlen(buf) == 0) { \ err_exit(_("%s: illegal value on line %d"), \ filename, lineno); \ } \ @@ -157,8 +156,8 @@ static const unsigned char game_file_crypt_key[] = { #define save_game_printf(_fmt, _var) \ do { \ snprintf(buf, BUFSIZE, _fmt "\n", _var); \ - scramble(crypt_key, buf, BUFSIZE); \ - fprintf(file, "%s", buf); \ + scramble(encbuf, buf, BIGBUFSIZE, crypt_key_p); \ + fprintf(file, "%s", encbuf); \ } while (0) #define save_game_write_int(_var) \ @@ -224,10 +223,12 @@ bool load_game (int num) int saved_errno, lineno; char *prev_locale; - char *buf; + char *buf, *inbuf; wchar_t *wcbuf; - int crypt_key; + unsigned int crypt_key; + unsigned int *crypt_key_p; + int is_encrypted_input; int n, i, j; #ifdef USE_UTF8_GAME_FILE @@ -239,6 +240,7 @@ bool load_game (int num) assert(num >= 1 && num <= 9); buf = xmalloc(BUFSIZE); + inbuf = xmalloc(BIGBUFSIZE); wcbuf = xmalloc(BUFSIZE * sizeof(wchar_t)); filename = game_filename(num); @@ -267,6 +269,7 @@ bool load_game (int num) } free(buf); + free(inbuf); free(wcbuf); free(filename); return false; @@ -335,12 +338,15 @@ bool load_game (int num) lineno = 4; - // Read in the game file encryption key - if (fscanf(file, "%i\n", &crypt_key) != 1) { + // Read in the game file encryption status + if (fscanf(file, "%i\n", &is_encrypted_input) != 1) { err_exit(_("%s: illegal or missing field on line %d"), filename, lineno); } lineno++; + crypt_key = 0; + crypt_key_p = is_encrypted_input ? &crypt_key : NULL; + // Read in various game variables load_game_read_int(n, n == MAX_X); load_game_read_int(n, n == MAX_Y); @@ -377,10 +383,13 @@ bool load_game (int num) // Read in galaxy map for (int x = 0; x < MAX_X; x++) { - if (fgets(buf, BUFSIZE, file) == NULL) { + if (fgets(inbuf, BIGBUFSIZE, file) == NULL) { err_exit(_("%s: missing field on line %d"), filename, lineno); } - if (strlen(unscramble(crypt_key, buf, BUFSIZE)) != MAX_Y + 1) { + if (unscramble(buf, inbuf, BUFSIZE, crypt_key_p) == NULL) { + err_exit(_("%s: illegal field on line %d"), filename, lineno); + } + if (strlen(buf) != MAX_Y + 1) { err_exit(_("%s: illegal field on line %d"), filename, lineno); } @@ -414,6 +423,7 @@ bool load_game (int num) #endif free(buf); + free(inbuf); free(wcbuf); free(filename); free(prev_locale); @@ -428,14 +438,16 @@ bool load_game (int num) bool save_game (int num) { const char *data_dir; - char *buf, *filename; + char *buf, *encbuf; + char *filename; FILE *file; char *codeset; int saved_errno; char *prev_locale; struct stat statbuf; - int crypt_key; int i, j, x, y; + unsigned int crypt_key; + unsigned int *crypt_key_p; #ifdef USE_UTF8_GAME_FILE iconv_t icd; @@ -446,9 +458,10 @@ bool save_game (int num) assert(num >= 1 && num <= 9); buf = xmalloc(BUFSIZE); + encbuf = xmalloc(BIGBUFSIZE); - crypt_key = option_dont_encrypt ? 0 : - game_file_crypt_key[randi(GAME_FILE_CRYPT_KEY_SIZE)]; + crypt_key = 0; + crypt_key_p = option_dont_encrypt ? NULL : &crypt_key; // Create the data directory, if needed data_dir = data_directory(); @@ -469,6 +482,7 @@ bool save_game (int num) strerror(saved_errno)); free(buf); + free(encbuf); return false; } } @@ -489,6 +503,7 @@ bool save_game (int num) "^{File %s: %s^}"), num, filename, strerror(saved_errno)); free(buf); + free(encbuf); free(filename); return false; } @@ -521,9 +536,9 @@ bool save_game (int num) prev_locale = xstrdup(setlocale(LC_NUMERIC, NULL)); setlocale(LC_NUMERIC, "C"); - // Write out the game file header and encryption key + // Write out the game file header and encryption status fprintf(file, "%s\n" "%s\n", GAME_FILE_HEADER, GAME_FILE_API_VERSION); - fprintf(file, "%s\n" "%d\n", codeset, crypt_key); + fprintf(file, "%s\n" "%d\n", codeset, ! option_dont_encrypt); // Write out various game variables save_game_write_int(MAX_X); @@ -568,8 +583,8 @@ bool save_game (int num) *p++ = '\n'; *p = '\0'; - scramble(crypt_key, buf, BUFSIZE); - fprintf(file, "%s", buf); + scramble(encbuf, buf, BIGBUFSIZE, crypt_key_p); + fprintf(file, "%s", encbuf); } // Write out a dummy sentinal value @@ -589,6 +604,7 @@ bool save_game (int num) #endif free(buf); + free(encbuf); free(filename); free(prev_locale); return true; diff --git a/src/fileio.h b/src/fileio.h index 0093195..344c129 100644 --- a/src/fileio.h +++ b/src/fileio.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/game.c b/src/game.c index ad7d0d7..068a633 100644 --- a/src/game.c +++ b/src/game.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/game.h b/src/game.h index 293aae2..d767749 100644 --- a/src/game.h +++ b/src/game.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/globals.c b/src/globals.c index a4f9f38..8569b05 100644 --- a/src/globals.c +++ b/src/globals.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/globals.h b/src/globals.h index c28e6c5..ca5463f 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/help.c b/src/help.c index 8611aeb..1a4ae73 100644 --- a/src/help.c +++ b/src/help.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/help.h b/src/help.h index 08b22a3..243c525 100644 --- a/src/help.h +++ b/src/help.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/intf.c b/src/intf.c index 6027d03..bd8f24f 100644 --- a/src/intf.c +++ b/src/intf.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/intf.h b/src/intf.h index 3fc356a..4949610 100644 --- a/src/intf.h +++ b/src/intf.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ @@ -622,10 +622,10 @@ extern int gettxchar (WINDOW *win, wint_t *restrict wch); way (including if the user made any changed, spaces were stripped or if emptyval was copied into buf[]). - If either KEY_DEFVAL1 or KEY_DEFVAL2 is pressed when the input line is - empty, the string pointed to by defaultval (if not NULL) is placed in - the buffer as if typed by the user. Editing is NOT terminated in this - case. + If a key matching any character in the string "input|DefaultValue" (by + default, "=;") is pressed when the input line is empty, the string + pointed to by defaultval (if not NULL) is placed in the buffer as if + typed by the user. Editing is NOT terminated in this case. If allowed is not NULL, only characters in that string are allowed to be entered into the input line. For example, if allowed points to diff --git a/src/move.c b/src/move.c index 7a8446d..ee32680 100644 --- a/src/move.c +++ b/src/move.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/move.h b/src/move.h index b5e777b..e1a1d84 100644 --- a/src/move.h +++ b/src/move.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ diff --git a/src/system.h b/src/system.h index 2d6ae02..c037aea 100644 --- a/src/system.h +++ b/src/system.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ @@ -75,6 +75,7 @@ // Headers defined by the GNU C Library +#include #include diff --git a/src/trader.c b/src/trader.c index cc2d3d4..2677ba6 100644 --- a/src/trader.c +++ b/src/trader.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ @@ -293,7 +293,7 @@ This program is free software that is distributed under the terms of the\n\ GNU General Public License, version 3 or later. You are welcome to\n\ modify and/or distribute it under certain conditions. This program has\n\ NO WARRANTY, to the extent permitted by law; see the License for details.\n\ -"), program_name, PACKAGE_VERSION, "1990-2012"); +"), program_name, PACKAGE_VERSION, "1990-2014"); exit(EXIT_SUCCESS); } diff --git a/src/trader.h b/src/trader.h index bf9f0ba..3c782c3 100644 --- a/src/trader.h +++ b/src/trader.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ @@ -53,7 +53,7 @@ ************************************************************************/ #define GAME_FILE_HEADER "Star Traders Saved Game" -#define GAME_FILE_API_VERSION "File API 7.2" // For game loads and saves +#define GAME_FILE_API_VERSION "File API 7.5" // For game loads and saves #define GAME_FILE_SENTINEL 42 // End of game file sentinel #ifdef USE_UTF8_GAME_FILE diff --git a/src/utils.c b/src/utils.c index 0d828bd..4b8ace3 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ @@ -50,7 +50,7 @@ wchar_t *mon_thousands_sep; // Local monetary thousands separator /************************************************************************ -* Module-specific constants and variable definitions * +* Module-specific constants and macros * ************************************************************************/ #define GAME_FILENAME_PROTO "game%d" @@ -62,6 +62,122 @@ wchar_t *mon_thousands_sep; // Local monetary thousands separator #define MOD_POSIX_P_CS_PRECEDES 1 #define MOD_POSIX_P_SEP_BY_SPACE 0 +// Constants used for scrambling and unscrambling game data +#define SCRAMBLE_CRC_LEN 8 // Length of CRC in ASCII (excl NUL) +#define SCRAMBLE_CHKSUM_LEN 3 // For checksum, excluding NUL byte +#define SCRAMBLE_CRC_MASK 0xFFFFFFFF // Bits of CRC to keep +#define SCRAMBLE_CHKSUM_MASK 0x0FFF // Bits of checksum to keep + +#define SCRAMBLE_PAD_CHAR '*' +#define SCRAMBLE_IGNORE_CHAR '~' +#define UNSCRAMBLE_INVALID (-1) +#define UNSCRAMBLE_IGNORE (-2) +#define UNSCRAMBLE_PAD_CHAR (-3) + +static const char scramble_table[] = + "0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz-_"; + +#define _b(n) \ + ((n) == '0' ? 0 : (n) == '1' ? 1 : (n) == '2' ? 2 : (n) == '3' ? 3 : \ + (n) == '4' ? 4 : (n) == '5' ? 5 : (n) == '6' ? 6 : (n) == '7' ? 7 : \ + (n) == '8' ? 8 : (n) == '9' ? 9 : (n) == 'A' ? 10 : (n) == 'a' ? 11 : \ + (n) == 'B' ? 12 : (n) == 'b' ? 13 : (n) == 'C' ? 14 : (n) == 'c' ? 15 : \ + (n) == 'D' ? 16 : (n) == 'd' ? 17 : (n) == 'E' ? 18 : (n) == 'e' ? 19 : \ + (n) == 'F' ? 20 : (n) == 'f' ? 21 : (n) == 'G' ? 22 : (n) == 'g' ? 23 : \ + (n) == 'H' ? 24 : (n) == 'h' ? 25 : (n) == 'I' ? 26 : (n) == 'i' ? 27 : \ + (n) == 'J' ? 28 : (n) == 'j' ? 29 : (n) == 'K' ? 30 : (n) == 'k' ? 31 : \ + (n) == 'L' ? 32 : (n) == 'l' ? 33 : (n) == 'M' ? 34 : (n) == 'm' ? 35 : \ + (n) == 'N' ? 36 : (n) == 'n' ? 37 : (n) == 'O' ? 38 : (n) == 'o' ? 39 : \ + (n) == 'P' ? 40 : (n) == 'p' ? 41 : (n) == 'Q' ? 42 : (n) == 'q' ? 43 : \ + (n) == 'R' ? 44 : (n) == 'r' ? 45 : (n) == 'S' ? 46 : (n) == 's' ? 47 : \ + (n) == 'T' ? 48 : (n) == 't' ? 49 : (n) == 'U' ? 50 : (n) == 'u' ? 51 : \ + (n) == 'V' ? 52 : (n) == 'v' ? 53 : (n) == 'W' ? 54 : (n) == 'w' ? 55 : \ + (n) == 'X' ? 56 : (n) == 'x' ? 57 : (n) == 'Y' ? 58 : (n) == 'y' ? 59 : \ + (n) == 'Z' ? 60 : (n) == 'z' ? 61 : (n) == '-' ? 62 : (n) == '_' ? 63 : \ + (n) == ' ' ? UNSCRAMBLE_IGNORE : \ + (n) == '\t' ? UNSCRAMBLE_IGNORE : \ + (n) == '\n' ? UNSCRAMBLE_IGNORE : \ + (n) == '\r' ? UNSCRAMBLE_IGNORE : \ + (n) == SCRAMBLE_IGNORE_CHAR ? UNSCRAMBLE_IGNORE : \ + (n) == SCRAMBLE_PAD_CHAR ? UNSCRAMBLE_PAD_CHAR : \ + UNSCRAMBLE_INVALID) + +static const signed char unscramble_table[] = { + _b(0), _b(1), _b(2), _b(3), _b(4), _b(5), _b(6), _b(7), + _b(8), _b(9), _b(10) , _b(11), _b(12), _b(13), _b(14), _b(15), + _b(16), _b(17), _b(18), _b(19), _b(20), _b(21), _b(22), _b(23), + _b(24), _b(25), _b(26), _b(27), _b(28), _b(29), _b(30), _b(31), + _b(32), _b(33), _b(34), _b(35), _b(36), _b(37), _b(38), _b(39), + _b(40), _b(41), _b(42), _b(43), _b(44), _b(45), _b(46), _b(47), + _b(48), _b(49), _b(50), _b(51), _b(52), _b(53), _b(54), _b(55), + _b(56), _b(57), _b(58), _b(59), _b(60), _b(61), _b(62), _b(63), + _b(64), _b(65), _b(66), _b(67), _b(68), _b(69), _b(70), _b(71), + _b(72), _b(73), _b(74), _b(75), _b(76), _b(77), _b(78), _b(79), + _b(80), _b(81), _b(82), _b(83), _b(84), _b(85), _b(86), _b(87), + _b(88), _b(89), _b(90), _b(91), _b(92), _b(93), _b(94), _b(95), + _b(96), _b(97), _b(98), _b(99), _b(100), _b(101), _b(102), _b(103), + _b(104), _b(105), _b(106), _b(107), _b(108), _b(109), _b(110), _b(111), + _b(112), _b(113), _b(114), _b(115), _b(116), _b(117), _b(118), _b(119), + _b(120), _b(121), _b(122), _b(123), _b(124), _b(125), _b(126), _b(127), + _b(128), _b(129), _b(130), _b(131), _b(132), _b(133), _b(134), _b(135), + _b(136), _b(137), _b(138), _b(139), _b(140), _b(141), _b(142), _b(143), + _b(144), _b(145), _b(146), _b(147), _b(148), _b(149), _b(150), _b(151), + _b(152), _b(153), _b(154), _b(155), _b(156), _b(157), _b(158), _b(159), + _b(160), _b(161), _b(162), _b(163), _b(164), _b(165), _b(166), _b(167), + _b(168), _b(169), _b(170), _b(171), _b(172), _b(173), _b(174), _b(175), + _b(176), _b(177), _b(178), _b(179), _b(180), _b(181), _b(182), _b(183), + _b(184), _b(185), _b(186), _b(187), _b(188), _b(189), _b(190), _b(191), + _b(192), _b(193), _b(194), _b(195), _b(196), _b(197), _b(198), _b(199), + _b(200), _b(201), _b(202), _b(203), _b(204), _b(205), _b(206), _b(207), + _b(208), _b(209), _b(210), _b(211), _b(212), _b(213), _b(214), _b(215), + _b(216), _b(217), _b(218), _b(219), _b(220), _b(221), _b(222), _b(223), + _b(224), _b(225), _b(226), _b(227), _b(228), _b(229), _b(230), _b(231), + _b(232), _b(233), _b(234), _b(235), _b(236), _b(237), _b(238), _b(239), + _b(240), _b(241), _b(242), _b(243), _b(244), _b(245), _b(246), _b(247), + _b(248), _b(249), _b(250), _b(251), _b(252), _b(253), _b(254), _b(255) +}; + +#define UNSCRAMBLE_TABLE_SIZE (sizeof(unscramble_table) / sizeof(unscramble_table[0])) + +static const unsigned char xor_table[] = { + /* Set of bytes 0x00 to 0xFF in random order; each byte in an input + string is XORed with successive bytes in this table. */ + 0x00, 0xCE, 0xB1, 0x9F, 0xE4, 0xE0, 0xE3, 0x79, + 0xA1, 0x3B, 0x4E, 0x89, 0x81, 0x84, 0x43, 0xC8, + 0xBE, 0x0F, 0x67, 0x2A, 0xB4, 0xD8, 0xBA, 0x5D, + 0x94, 0x06, 0x69, 0x0E, 0x1C, 0x48, 0x9E, 0x0A, + 0x1D, 0x09, 0x02, 0xCD, 0xD4, 0xF6, 0x5B, 0x8A, + 0xAE, 0x65, 0xB3, 0xB5, 0xA7, 0x13, 0x03, 0xF2, + 0x42, 0xF0, 0xA6, 0xAA, 0x35, 0xCB, 0x2C, 0x55, + 0xF5, 0xC7, 0x32, 0xB7, 0x6B, 0xEA, 0xC3, 0x6F, + 0x41, 0xFF, 0xD1, 0x24, 0x54, 0xA9, 0xC6, 0xC2, + 0x74, 0xEE, 0xBC, 0x99, 0x59, 0x71, 0x3D, 0x85, + 0x0B, 0xF7, 0x3A, 0x7E, 0xDB, 0x45, 0xE8, 0x96, + 0xD0, 0xC1, 0xE6, 0xFD, 0x86, 0x8C, 0x9B, 0x0C, + 0x66, 0x5F, 0xE5, 0x14, 0x98, 0x3C, 0xBD, 0xE2, + 0x88, 0xA3, 0x30, 0x38, 0x2F, 0xA2, 0x37, 0x70, + 0xB8, 0x11, 0x61, 0x93, 0x52, 0x1B, 0xDD, 0x20, + 0x60, 0x19, 0xEF, 0xD2, 0xEC, 0x73, 0x07, 0x92, + 0x4C, 0x6A, 0xA8, 0x9D, 0x34, 0x04, 0x87, 0x2E, + 0x1E, 0xA4, 0xCA, 0x72, 0x63, 0xD7, 0x7F, 0xFB, + 0x68, 0xE1, 0xBF, 0x10, 0x8E, 0xAF, 0x9A, 0xFA, + 0xA0, 0xDE, 0x1F, 0x31, 0x15, 0x97, 0xED, 0x2B, + 0x36, 0x8D, 0x12, 0xC5, 0x23, 0x95, 0x33, 0x56, + 0x4F, 0xE7, 0xAD, 0x5C, 0x4B, 0x83, 0xDC, 0x29, + 0xE9, 0xCF, 0x8F, 0x58, 0x4D, 0x5A, 0x08, 0x49, + 0xFC, 0x6D, 0x7C, 0xB6, 0xD3, 0x7B, 0xD6, 0x53, + 0x57, 0x82, 0x0D, 0xD9, 0x7D, 0xDA, 0x4A, 0xDF, + 0x27, 0x40, 0x1A, 0x22, 0xC9, 0x51, 0x3E, 0x6C, + 0xC4, 0x18, 0xCC, 0xAC, 0xEB, 0xA5, 0xF4, 0x44, + 0xFE, 0x76, 0xF8, 0x75, 0xF3, 0x2D, 0xB0, 0xB9, + 0x9C, 0x47, 0x7A, 0x28, 0xBB, 0xF1, 0x16, 0x64, + 0x46, 0x21, 0x78, 0x90, 0xD5, 0x80, 0x3F, 0x39, + 0x25, 0xB2, 0x6E, 0x8B, 0x77, 0xC0, 0x05, 0x50, + 0x17, 0xF9, 0x01, 0x26, 0x91, 0x5E, 0x62, 0xAB +}; + +#define XOR_TABLE_SIZE (sizeof(xor_table) / sizeof(xor_table[0])) + /************************************************************************ * Module-specific variables * @@ -73,6 +189,69 @@ static char *data_directory_str = NULL; // Writable data dir pathname static bool add_currency_symbol = false; // Do we need to add "$"? +/************************************************************************ +* Module-specific function prototypes * +************************************************************************/ + +/* + Function: apply_xor - Scramble a buffer using xor_table + Parameters: dest - Location of destination buffer + src - Location of source buffer + n - Number of bytes to scramble + key - Pointer to xor_table index + Returns: (nothing) + + This function copies n bytes from *src into *dest, applying a XOR with + the contents of xor_table in the process. It is a reversable function: + apply_xor(apply_xor(buffer)) == buffer. It is used by both scramble() + and unscramble(). +*/ +static void apply_xor (void *restrict dest, const void *restrict src, + size_t n, unsigned int *restrict key); + + +/* + Function: b64encode - Convert a block to non-standard Base64 encoding + Parameters: in - Location of input buffer + inlen - Size of input buffer + out - Location of output buffer + outlen - Size of output buffer + Returns: size_t - Number of bytes placed in output buffer + + This function encodes inlen bytes in the input buffer into the output + buffer using a non-standard Base64 encoding (as contained above in + scramble_table[]). The resulting encoded string length is returned + (including trailing '\n' but NOT including trailing NUL). + + Note that the output buffer must be at least 4/3 the size of the input + buffer; if not, an assert is generated. + + This function is used by scramble(). +*/ +static size_t b64encode (const void *restrict in, size_t inlen, + void *restrict out, size_t outlen); + + +/* + Function: b64decode - Convert a block from non-standard Base64 encoding + Parameters: in - Location of input buffer + inlen - Size of input buffer + out - Location of output buffer + outlen - Size of output buffer + Returns: ssize_t - Number of bytes placed in output buffer, or -1 + + This function decodes up to inlen bytes in the input buffer into the + output buffer using a non-standard Base64 encoding (as contained above + in unscramble_table[]). The resulting decoded buffer length is + returned; that buffer may contain NUL bytes. If an error occurs during + decoding, -1 is returned instead. + + This function is used by unscramble(). +*/ +static ssize_t b64decode (const void *restrict in, size_t inlen, + void *restrict out, size_t outlen); + + /************************************************************************ * Initialisation and environment function definitions * ************************************************************************/ @@ -415,45 +594,336 @@ ssize_t l_strfmon (char *restrict buf, size_t maxsize, * Encryption function definitions * ************************************************************************/ -// These functions are documented in the file "utils.h" +/* These functions are documented in the file "utils.h" or in the + comments above. */ /***********************************************************************/ // scramble: Scramble (encrypt) the buffer -char *scramble (int key, char *restrict buf, int bufsize) +char *scramble (char *restrict dest, const char *restrict src, + size_t size, unsigned int *restrict key) { - /* The algorithm used here is reversable: scramble(scramble(...)) - will (or, at least, should!) return the same as the original - buffer. Problematic characters are ignored; however, this - function assumes all other characters are permitted in files. - This is true on all POSIX systems. */ + unsigned long int crc; + unsigned int chksum; + size_t srclen; + char *xorbuf, *midxor; + char *middest; + char crcbuf[SCRAMBLE_CRC_LEN + 1]; + char chksumbuf[SCRAMBLE_CHKSUM_LEN + 1]; - if (buf != NULL && key != 0) { - char *p = buf; - unsigned char k = ~key; - for (int i = 0; i < bufsize && *p != '\0'; i++, k++, p++) { - char c = *p; - char r = c ^ k; // Simple encryption: XOR on a moving key + assert(dest != NULL); + assert(src != NULL); + assert(size > 0); - if (c != '\r' && c != '\n' - && r != '\r' && r != '\n' && r != '\0') { - *p = r; - } + srclen = strlen(src); + + if (key == NULL) { + // No encryption required + assert(size >= srclen + 2); // Enough room to add "\n"? + + strcpy(dest, src); + + // Add "\n" if needed + if (dest[srclen - 1] != '\n') { + dest[srclen] = '\n'; + dest[srclen + 1] = '\0'; } + } else { + // Scramble the input + + xorbuf = xmalloc(srclen + SCRAMBLE_CRC_LEN + 1); + + // Scramble src using *key, leaving room for CRC32 in front + midxor = xorbuf + SCRAMBLE_CRC_LEN; + apply_xor(midxor, src, srclen, key); + + // Calculate CRC32 checksum of XORed buffer + crc = crc32(midxor, srclen) & SCRAMBLE_CRC_MASK; + snprintf(crcbuf, SCRAMBLE_CRC_LEN + 1, "%08lx", crc); + memcpy(xorbuf, crcbuf, SCRAMBLE_CRC_LEN); + + // Encode whole buffer (including CRC32) using Base64 + middest = dest + SCRAMBLE_CHKSUM_LEN; + b64encode(xorbuf, srclen + SCRAMBLE_CRC_LEN, + middest, size - SCRAMBLE_CHKSUM_LEN); + + // Calculate simple checksum + chksum = 0; + for (char *p = middest; *p != '\0' && *p != '\n'; p++) { + chksum += *p; + } + chksum &= SCRAMBLE_CHKSUM_MASK; + + // Place checksum in front of Base64 string + snprintf(chksumbuf, SCRAMBLE_CHKSUM_LEN + 1, "%03x", chksum); + memcpy(dest, chksumbuf, SCRAMBLE_CHKSUM_LEN); + + free(xorbuf); } - return buf; + return dest; } /***********************************************************************/ // unscramble: Unscramble (decrypt) the buffer -char *unscramble (int key, char *restrict buf, int bufsize) +char *unscramble (char *restrict dest, const char *restrict src, + size_t size, unsigned int *restrict key) { - return scramble(key, buf, bufsize); + unsigned long int crc, crc_input; + unsigned int chksum, chksum_input; + size_t srclen; + char *xorbuf, *midxor; + ssize_t xorlen; + const char *midsrc; + char crcbuf[SCRAMBLE_CRC_LEN + 2]; // Leave room for '\n\0' + char chksumbuf[SCRAMBLE_CHKSUM_LEN + 2]; + + + assert(dest != NULL); + assert(src != NULL); + assert(size > 0); + + srclen = strlen(src); + + if (key == NULL) { + // No decryption required + assert(size >= srclen + 1); + strcpy(dest, src); + } else { + // Unscramble the input + + // Copy out simple checksum from input + memcpy(chksumbuf, src, SCRAMBLE_CHKSUM_LEN); + chksumbuf[SCRAMBLE_CHKSUM_LEN] = '\n'; + chksumbuf[SCRAMBLE_CHKSUM_LEN + 1] = '\0'; + if (sscanf(chksumbuf, "%x\n", &chksum_input) != 1) { + return NULL; + } + + // Calculate and compare checksums + midsrc = src + SCRAMBLE_CHKSUM_LEN; + chksum = 0; + for (const char *p = midsrc; *p != '\0' && *p != '\n'; p++) { + chksum += *p; + } + chksum &= SCRAMBLE_CHKSUM_MASK; + + if (chksum != chksum_input) { + return NULL; + } + + xorbuf = xmalloc(size + SCRAMBLE_CRC_LEN); + + // Decode buffer sans checksum using Base64 + xorlen = b64decode(midsrc, srclen - SCRAMBLE_CHKSUM_LEN, + xorbuf, size + SCRAMBLE_CRC_LEN); + if (xorlen < SCRAMBLE_CRC_LEN) { + free(xorbuf); + return NULL; + } + + // Copy out CRC32 checksum + memcpy(crcbuf, xorbuf, SCRAMBLE_CRC_LEN); + crcbuf[SCRAMBLE_CRC_LEN] = '\n'; + crcbuf[SCRAMBLE_CRC_LEN + 1] = '\0'; + if (sscanf(crcbuf, "%lx\n", &crc_input) != 1) { + free(xorbuf); + return NULL; + } + + // Calculate and compare CRC32 checksums + midxor = xorbuf + SCRAMBLE_CRC_LEN; + crc = crc32(midxor, xorlen - SCRAMBLE_CRC_LEN) & SCRAMBLE_CRC_MASK; + if (crc != crc_input) { + free(xorbuf); + return NULL; + } + + // Descramble xorbuf using *key, ignoring CRC32 in front + apply_xor(dest, midxor, xorlen - SCRAMBLE_CRC_LEN, key); + + // Convert the output to a C string + assert(size >= xorlen - SCRAMBLE_CRC_LEN + 1); + dest[xorlen - SCRAMBLE_CRC_LEN] = '\0'; + + free(xorbuf); + } + + return dest; +} + + +/***********************************************************************/ +// apply_xor: Scramble a buffer using xor_table + +void apply_xor (void *restrict dest, const void *restrict src, + size_t n, unsigned int *restrict key) +{ + assert(dest != NULL); + assert(src != NULL); + assert(key != NULL); + assert(*key < XOR_TABLE_SIZE); + + for (size_t i = 0; i < n; i++, dest++, src++) { + *(unsigned char *) dest = *(unsigned char *) src ^ xor_table[*key]; + *key = (*key + 1) % XOR_TABLE_SIZE; + } +} + + +/***********************************************************************/ +// b64encode: Convert a block to non-standard Base64 encoding + +size_t b64encode (const void *restrict in, size_t inlen, + void *restrict out, size_t outlen) +{ + size_t count; + size_t padding; + + // Note that bit manipulations on strings require unsigned char! + const unsigned char *u_in = in; + unsigned char *u_out = out; + + + assert(u_in != NULL); + assert(u_out != NULL); + assert(outlen > 0); + assert(outlen > inlen); + + count = 0; + padding = inlen % 3; + + for (size_t i = 0; i < inlen; i += 3, u_in += 3) { + unsigned long int n; + unsigned char n0, n1, n2, n3; + + // Convert three input bytes into a 24-bit number + n = u_in[0] << 16; + if (i + 1 < inlen) { + n += u_in[1] << 8; + } + if (i + 2 < inlen) { + n += u_in[2]; + } + + // Convert the 24-bit number into four Base64 bytes + n0 = (unsigned char) (n >> 18) & 0x3F; + n1 = (unsigned char) (n >> 12) & 0x3F; + n2 = (unsigned char) (n >> 6) & 0x3F; + n3 = (unsigned char) n & 0x3F; + + assert(count + 3 < outlen); + + *u_out++ = scramble_table[n0]; + *u_out++ = scramble_table[n1]; + count += 2; + + if (i + 1 < inlen) { + *u_out++ = scramble_table[n2]; + count++; + } + if (i + 2 < inlen) { + *u_out++ = scramble_table[n3]; + count++; + } + } + + if (padding > 0) { + assert(count + 2 < outlen); + for (; padding < 3; padding++) { + *u_out++ = SCRAMBLE_PAD_CHAR; + count++; + } + } + + assert(count + 2 <= outlen); + + *u_out++ = '\n'; + *u_out = '\0'; + count++; + + return count; +} + + +/***********************************************************************/ +// b64decode: Convert a block from non-standard Base64 encoding + +ssize_t b64decode (const void *restrict in, size_t inlen, + void *restrict out, size_t outlen) +{ + size_t count; + unsigned long int n; + + // Note that bit manipulations on strings require unsigned char! + // Using char * results in very subtle bugs indeed... + const unsigned char *u_in = in; + unsigned char *u_out = out; + + + assert(u_in != NULL); + assert(u_out != NULL); + assert(outlen > 0); + + count = 0; + n = 1; + + for (size_t i = 0; i < inlen && *u_in != '\0'; i++, u_in++) { + char c = *u_in > UNSCRAMBLE_TABLE_SIZE ? + UNSCRAMBLE_INVALID : unscramble_table[*u_in]; + + switch (c) { + case UNSCRAMBLE_INVALID: + return -1; + + case UNSCRAMBLE_IGNORE: + continue; + + case UNSCRAMBLE_PAD_CHAR: + // Assume end of data + i = inlen; + continue; + + default: + n = n << 6 | c; // c is 0 .. 63 + + if (n & 0x1000000) { + // Convert 24-bit number into three output bytes + count += 3; + if (count > outlen) { + return -1; + } + + *u_out++ = n >> 16; + *u_out++ = n >> 8; + *u_out++ = n; + n = 1; + } + } + } + + if (n & 0x40000) { + count += 2; + if (count > outlen) { + return -1; + } + + *u_out++ = n >> 10; + *u_out++ = n >> 2; + } else if (n & 0x1000) { + count += 1; + if (count > outlen) { + return -1; + } + + *u_out++ = n >> 4; + } + + return count; } diff --git a/src/utils.h b/src/utils.h index b20bb1d..47302e9 100644 --- a/src/utils.h +++ b/src/utils.h @@ -1,7 +1,7 @@ /************************************************************************ * * * Star Traders: A Game of Interstellar Trading * -* Copyright (C) 1990-2012, John Zaitseff * +* Copyright (C) 1990-2014, John Zaitseff * * * ************************************************************************/ @@ -260,46 +260,58 @@ extern ssize_t l_strfmon (char *restrict buf, size_t maxsize, ************************************************************************/ /* - The functions described here are simple in the extreme: they are only - designed to stop casual cheating! + The functions described here are NOT cryptographically secure: they are + only designed to stop casual cheating! */ /* Function: scramble - Scramble (encrypt) the buffer - Parameters: key - Encryption key - buf - Pointer to buffer to encrypt - bufsize - Size of buffer - Returns: char * - Pointer to buffer + Parameters: dest - Pointer to output buffer + src - Pointer to input buffer to encrypt + size - Size of output buffer + key - Pointer to encryption/decryption key + Returns: char * - Pointer to output buffer - This function scrambles (encrypts) the buffer *buf using a trivial - in-place encryption algorithm. If key is zero, or buf is NULL or - bufsize is less than 1, no encryption takes place. + This function scrambles (encrypts) the buffer *src and places the + result in *dest. It uses *key to keep a running encryption key. If + the key is NULL, no encryption is performed. - The buffer should contain a C-style string terminated by '\0'. The - characters '\r', '\n' and '\0' are guaranteed to remain the same before - and after encryption. At most bufsize bytes are encrypted; buf is - returned as the result. + The input buffer should contain a C-style string terminated by '\0'. + The output buffer will be terminated with '\n\0', even if the input + does not have a terminating '\n'. The pointer dest is returned as the + output. + + Note that src and dest MUST point to different buffers, and that *dest + typically must be twice as large as *src. In addition, *key MUST be + initialised to zero before calling scramble() for the first time. */ -extern char *scramble (int key, char *restrict buf, int bufsize); +extern char *scramble (char *restrict dest, const char *restrict src, + size_t size, unsigned int *restrict key); /* Function: unscramble - Unscramble (decrypt) the buffer - Parameters: key - Encryption/decryption key - buf - Pointer to buffer to decrypt - bufsize - Size of buffer - Returns: char * - Pointer to buffer + Parameters: dest - Pointer to output buffer + src - Pointer to input buffer to decrypt + size - Size of output buffer + key - Pointer to encryption/decryption key + Returns: char * - Pointer to output buffer or NULL on error This function does the reverse of scramble(): it unscrambles (decrypts) - the buffer *buf using an in-place algorithm. If key is zero, or buf is - NULL or bufsize is less than 1, no decryption takes place. + the buffer *src and places the result in *dest. If key is NULL, no + decryption takes place: the input buffer is copied to the output buffer + without changes. - The buffer should contain a C-style string terminated by '\0'. As for - scramble(), the characters '\r', '\n' and '\0' will not be changed (nor - will any encrypted character map back to these values). At most - bufsize bytes are decrypted; buf is returned as the result. + The buffer should contain a C-style string terminated by '\0'. Note + that src and dest MUST point to different buffers. The pointer dest is + returned as the output, unless there is an error in the data (such as a + corrupted checksum), in which case NULL is returned. + + Note that *key MUST be initialised to zero before calling unscramble() + for the first time. */ -extern char *unscramble (int key, char *restrict buf, int bufsize); +extern char *unscramble (char *restrict dest, const char *restrict src, + size_t size, unsigned int *restrict key); /************************************************************************