diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 00000000..83bc72ec --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,1068 @@ +1 Notes on the Free Translation Project +*************************************** + +Free software is going international! The Free Translation Project is +a way to get maintainers of free software, translators, and users all +together, so that free software will gradually become able to speak many +languages. A few packages already provide translations for their +messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work on translations can contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +1.1 Quick configuration advice +============================== + +If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +1.2 INSTALL Matters +=================== + +Some packages are "localizable" when properly installed; the programs +they contain can be made to speak your own native language. Most such +packages use GNU `gettext'. Other packages have their own ways to +internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. If not, the included GNU +`gettext' library will be used. This library is wholly contained +within this package, usually in the `intl/' subdirectory, so prior +installation of the GNU `gettext' package is _not_ required. +Installers may use special options at configuration time for changing +the default behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will, respectively, bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might not be desirable. You should use +the more recent version of the GNU `gettext' library. I.e. if the file +`intl/VERSION' shows that the library which comes with this package is +more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages usually have many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +1.3 Using This Package +====================== + +As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. If you happen to have the `LC_ALL' or some other +`LC_xxx' environment variables set, you should unset them before +setting `LANG', otherwise the setting of `LANG' will not have the +desired effect. Here `LL' is an ISO 639 two-letter language code, and +`CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your language by running the +command `locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +1.4 Translating Teams +===================== + +For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://translationproject.org/', in the "Teams" area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `coordinator@translationproject.org' to +reach the coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skills are praised more than +programming skills, here. + +1.5 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of November +2007. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo + +----------------------------------------------------+ + Compendium | [] [] [] [] | + a2ps | [] [] [] [] [] | + aegis | () | + ant-phone | () | + anubis | [] | + ap-utils | | + aspell | [] [] [] [] [] | + bash | [] | + bfd | | + bibshelf | [] | + binutils | | + bison | [] [] | + bison-runtime | [] | + bluez-pin | [] [] [] [] [] | + cflow | [] | + clisp | [] [] [] | + console-tools | [] [] | + coreutils | [] [] [] [] | + cpio | | + cpplib | [] [] [] | + cryptonit | [] | + dialog | | + diffutils | [] [] [] [] [] [] | + doodle | [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + fetchmail | [] [] () [] [] | + findutils | [] | + findutils_stable | [] [] [] | + flex | [] [] [] | + fslint | | + gas | | + gawk | [] [] [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] | + gip | [] | + gliv | [] [] | + glunarclock | [] | + gmult | [] [] | + gnubiff | () | + gnucash | [] [] () () [] | + gnuedu | | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | | + gpe-clock | [] [] | + gpe-conf | [] [] | + gpe-contacts | | + gpe-edit | [] | + gpe-filemanager | | + gpe-go | [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] | + gpe-package | | + gpe-sketchbook | [] [] | + gpe-su | [] [] | + gpe-taskmanager | [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | | + gphoto2 | [] [] [] [] | + gprof | [] [] | + gpsdrive | | + gramadoir | [] [] | + grep | [] [] | + gretl | () | + gsasl | | + gss | | + gst-plugins-bad | [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] [] | + gst-plugins-ugly | [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | () | + gtkam | [] [] [] [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] [] | + indent | [] [] [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] [] | + iso_639 | [] [] [] [] | + jpilot | [] | + jtag | | + jwhois | | + kbd | [] [] [] [] | + keytouch | [] [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + latrine | () | + ld | [] | + leafpad | [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] | + libextractor | [] | + libgpewidget | [] [] [] | + libgpg-error | [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] | + libgsasl | | + libiconv | [] [] | + libidn | [] [] [] | + lifelines | [] () | + lilypond | [] | + lingoteach | | + lprng | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] | + make | [] [] | + man-db | [] [] [] | + minicom | [] [] [] | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pilot-qof | | + popt | [] [] [] | + psmisc | [] | + pwdutils | | + qof | | + radius | [] | + recode | [] [] [] [] [] [] | + rpm | [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] [] | + sed | [] [] [] | + shared-mime-info | [] [] [] [] () [] [] [] | + sharutils | [] [] [] [] [] [] | + shishi | | + skencil | [] () | + solfege | | + soundtracker | [] [] | + sp | [] | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] | + texinfo | [] [] [] | + tin | () () | + tuxpaint | [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + util-linux-ng | [] [] [] [] | + vorbis-tools | [] | + wastesedge | () | + wdiff | [] [] [] [] | + wget | [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] | + xpad | [] [] [] | + +----------------------------------------------------+ + af am ar az be bg bs ca cs cy da de el en en_GB eo + 6 0 2 1 8 26 2 40 48 2 56 88 15 1 15 18 + + es et eu fa fi fr ga gl gu he hi hr hu id is it + +--------------------------------------------------+ + Compendium | [] [] [] [] [] | + a2ps | [] [] [] () | + aegis | | + ant-phone | [] | + anubis | [] | + ap-utils | [] [] | + aspell | [] [] [] | + bash | [] | + bfd | [] [] | + bibshelf | [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] [] [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] | + cflow | [] | + clisp | [] [] | + console-tools | | + coreutils | [] [] [] [] [] [] | + cpio | [] [] [] | + cpplib | [] [] | + cryptonit | [] | + dialog | [] [] [] | + diffutils | [] [] [] [] [] [] [] [] [] | + doodle | [] [] | + e2fsprogs | [] [] [] | + enscript | [] [] [] | + fetchmail | [] | + findutils | [] [] [] | + findutils_stable | [] [] [] [] | + flex | [] [] [] | + fslint | | + gas | [] [] | + gawk | [] [] [] [] () | + gcal | [] [] | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] | + gip | [] [] [] [] | + gliv | () | + glunarclock | [] [] [] | + gmult | [] [] [] | + gnubiff | () () | + gnucash | () () () | + gnuedu | [] | + gnulib | [] [] [] | + gnunet | | + gnunet-gtk | | + gnutls | | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | | + gpe-clock | [] [] [] [] | + gpe-conf | [] | + gpe-contacts | [] [] | + gpe-edit | [] [] [] [] | + gpe-filemanager | [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] [] [] [] | + gpe-package | [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] [] | + gpe-taskmanager | [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] | + gphoto2 | [] [] [] [] [] | + gprof | [] [] [] [] [] | + gpsdrive | [] | + gramadoir | [] [] | + grep | [] [] [] | + gretl | [] [] [] () | + gsasl | [] [] | + gss | [] [] | + gst-plugins-bad | [] [] [] [] | + gst-plugins-base | [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] | + gstreamer | [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] [] [] [] | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | [] | + iso_4217 | [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] | + jpilot | [] [] | + jtag | [] | + jwhois | [] [] [] [] [] | + kbd | [] [] | + keytouch | [] [] [] | + keytouch-editor | [] | + keytouch-keyboa... | [] [] | + latrine | [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | [] | + libgpewidget | [] [] [] [] [] | + libgpg-error | [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] | + libgsasl | [] [] | + libiconv | [] [] [] | + libidn | [] [] | + lifelines | () | + lilypond | [] [] [] | + lingoteach | [] [] [] | + lprng | | + lynx | [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] [] | + make | [] [] [] [] [] [] [] [] | + man-db | [] | + minicom | [] [] [] [] | + nano | [] [] [] [] [] [] [] | + opcodes | [] [] [] [] | + parted | [] [] [] | + pilot-qof | | + popt | [] [] [] [] | + psmisc | [] [] | + pwdutils | | + qof | [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + rpm | [] [] | + screem | | + scrollkeeper | [] [] [] | + sed | [] [] [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] [] | + shishi | [] | + skencil | [] [] | + solfege | [] | + soundtracker | [] [] [] | + sp | [] | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + tin | [] () | + tuxpaint | [] [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux | [] [] [] [] [] [] [] | + util-linux-ng | [] [] [] [] [] [] [] | + vorbis-tools | | + wastesedge | () | + wdiff | [] [] [] [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + es et eu fa fi fr ga gl gu he hi hr hu id is it + 85 22 14 2 48 101 61 12 2 8 2 6 53 29 1 52 + + ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn + +--------------------------------------------------+ + Compendium | [] | + a2ps | () [] [] | + aegis | () | + ant-phone | [] | + anubis | [] [] [] | + ap-utils | [] | + aspell | [] [] | + bash | [] | + bfd | | + bibshelf | [] | + binutils | | + bison | [] [] [] | + bison-runtime | [] [] [] | + bluez-pin | [] [] [] | + cflow | | + clisp | [] | + console-tools | | + coreutils | [] | + cpio | [] | + cpplib | [] | + cryptonit | [] | + dialog | [] [] | + diffutils | [] [] [] | + doodle | | + e2fsprogs | [] | + enscript | [] | + fetchmail | [] [] | + findutils | [] | + findutils_stable | [] | + flex | [] [] | + fslint | | + gas | | + gawk | [] [] | + gcal | | + gcc | | + gettext-examples | [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] [] | + gip | [] [] | + gliv | [] | + glunarclock | [] [] | + gmult | [] [] [] | + gnubiff | | + gnucash | () () () | + gnuedu | | + gnulib | [] [] | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gpe-aerial | [] | + gpe-beam | [] | + gpe-calendar | [] | + gpe-clock | [] [] [] | + gpe-conf | [] [] [] | + gpe-contacts | [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] | + gpe-taskmanager | [] [] [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | [] | + gphoto2 | [] [] | + gprof | [] | + gpsdrive | [] | + gramadoir | () | + grep | [] [] | + gretl | | + gsasl | [] | + gss | | + gst-plugins-bad | [] | + gst-plugins-base | [] | + gst-plugins-good | [] | + gst-plugins-ugly | [] | + gstreamer | [] | + gtick | [] | + gtkam | [] [] | + gtkorphan | [] | + gtkspell | [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] | + indent | [] [] | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] | + iso_3166_2 | [] | + iso_4217 | [] [] [] | + iso_639 | [] [] [] [] | + jpilot | () () | + jtag | | + jwhois | [] | + kbd | [] | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | | + latrine | [] | + ld | | + leafpad | [] [] | + libc | [] [] [] | + libexif | | + libextractor | | + libgpewidget | [] | + libgpg-error | | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | [] | + libiconv | [] | + libidn | [] [] | + lifelines | [] | + lilypond | [] | + lingoteach | [] | + lprng | | + lynx | [] [] | + m4 | [] [] | + mailfromd | | + mailutils | | + make | [] [] [] | + man-db | | + minicom | [] | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pilot-qof | | + popt | [] [] [] | + psmisc | [] [] [] | + pwdutils | | + qof | | + radius | | + recode | [] | + rpm | [] [] | + screem | [] | + scrollkeeper | [] [] [] [] | + sed | [] [] | + shared-mime-info | [] [] [] [] [] [] [] | + sharutils | [] [] | + shishi | | + skencil | | + solfege | () () | + soundtracker | | + sp | () | + system-tools-ba... | [] [] [] [] | + tar | [] [] [] | + texinfo | [] [] | + tin | | + tuxpaint | () [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] | + util-linux-ng | [] [] | + vorbis-tools | | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] | + xchat | [] [] [] [] | + xkeyboard-config | [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn + 51 2 25 3 2 0 6 0 2 2 20 0 11 1 103 6 + + or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta + +--------------------------------------------------+ + Compendium | [] [] [] [] [] | + a2ps | () [] [] [] [] [] [] | + aegis | () () | + ant-phone | [] [] | + anubis | [] [] [] | + ap-utils | () | + aspell | [] [] [] | + bash | [] [] | + bfd | | + bibshelf | [] | + binutils | [] [] | + bison | [] [] [] [] [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] [] | + cflow | [] | + clisp | [] | + console-tools | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + cpplib | [] | + cryptonit | [] [] | + dialog | [] | + diffutils | [] [] [] [] [] [] | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] | + findutils_stable | [] [] [] [] [] [] | + flex | [] [] [] [] [] | + fslint | [] | + gas | | + gawk | [] [] [] [] | + gcal | [] | + gcc | [] [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] [] | + gip | [] [] [] [] | + gliv | [] [] [] [] [] [] | + glunarclock | [] [] [] [] [] [] | + gmult | [] [] [] [] | + gnubiff | () [] | + gnucash | () [] | + gnuedu | | + gnulib | [] [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gpe-aerial | [] [] [] [] [] [] [] | + gpe-beam | [] [] [] [] [] [] [] | + gpe-calendar | [] [] [] [] | + gpe-clock | [] [] [] [] [] [] [] [] | + gpe-conf | [] [] [] [] [] [] [] | + gpe-contacts | [] [] [] [] [] | + gpe-edit | [] [] [] [] [] [] [] [] [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] [] [] [] [] [] | + gpe-login | [] [] [] [] [] [] [] [] | + gpe-ownerinfo | [] [] [] [] [] [] [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] [] [] [] [] [] [] | + gpe-su | [] [] [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] [] | + gpe-todo | [] [] [] [] | + gphoto2 | [] [] [] [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] | + gramadoir | [] [] | + grep | [] [] [] [] | + gretl | [] [] [] | + gsasl | [] [] [] | + gss | [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] | + gst-plugins-ugly | [] [] [] | + gstreamer | [] [] [] [] | + gtick | [] | + gtkam | [] [] [] [] [] | + gtkorphan | [] | + gtkspell | [] [] [] [] [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] [] | + herrie | [] [] [] | + hylafax | | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] | + jpilot | | + jtag | [] | + jwhois | [] [] [] [] | + kbd | [] [] [] | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + latrine | | + ld | [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] | + libextractor | [] [] | + libgpewidget | [] [] [] [] [] [] [] [] | + libgpg-error | [] [] [] | + libgphoto2 | [] | + libgphoto2_port | [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] | + libidn | [] [] () | + lifelines | [] [] | + lilypond | | + lingoteach | [] | + lprng | [] | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] [] [] | + make | [] [] [] [] | + man-db | [] [] [] [] | + minicom | [] [] [] [] [] | + nano | [] [] [] [] | + opcodes | [] [] | + parted | [] | + pilot-qof | | + popt | [] [] [] [] | + psmisc | [] [] | + pwdutils | [] [] | + qof | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] | + rpm | [] [] [] [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] | + skencil | [] [] [] | + solfege | [] | + soundtracker | [] [] | + sp | | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + tin | () | + tuxpaint | [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + util-linux-ng | [] [] [] [] | + vorbis-tools | [] | + wastesedge | | + wdiff | [] [] [] [] [] [] [] | + wget | [] [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta + 0 5 77 31 53 4 58 72 3 45 46 9 45 122 3 + + tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu + +---------------------------------------------------+ + Compendium | [] [] [] [] | 19 + a2ps | [] [] [] | 19 + aegis | [] | 1 + ant-phone | [] [] | 6 + anubis | [] [] [] | 11 + ap-utils | () [] | 4 + aspell | [] [] [] | 16 + bash | [] | 6 + bfd | | 2 + bibshelf | [] | 7 + binutils | [] [] [] [] | 9 + bison | [] [] [] [] | 20 + bison-runtime | [] [] [] [] | 18 + bluez-pin | [] [] [] [] [] [] | 28 + cflow | [] [] | 5 + clisp | | 9 + console-tools | [] [] | 5 + coreutils | [] [] [] | 18 + cpio | [] [] [] [] | 11 + cpplib | [] [] [] [] [] | 12 + cryptonit | [] | 6 + dialog | [] [] [] | 9 + diffutils | [] [] [] [] [] | 29 + doodle | [] | 6 + e2fsprogs | [] [] | 10 + enscript | [] [] [] | 16 + fetchmail | [] [] | 12 + findutils | [] [] [] | 11 + findutils_stable | [] [] [] [] | 18 + flex | [] [] | 15 + fslint | [] | 2 + gas | [] | 3 + gawk | [] [] [] | 16 + gcal | [] | 5 + gcc | [] [] [] | 7 + gettext-examples | [] [] [] [] [] [] | 29 + gettext-runtime | [] [] [] [] [] [] | 28 + gettext-tools | [] [] [] [] [] | 20 + gip | [] [] | 13 + gliv | [] [] | 11 + glunarclock | [] [] [] | 15 + gmult | [] [] [] [] | 16 + gnubiff | [] | 2 + gnucash | () [] | 5 + gnuedu | [] | 2 + gnulib | [] | 10 + gnunet | | 0 + gnunet-gtk | [] [] | 3 + gnutls | | 4 + gpe-aerial | [] [] | 14 + gpe-beam | [] [] | 14 + gpe-calendar | [] [] | 7 + gpe-clock | [] [] [] [] | 21 + gpe-conf | [] [] [] | 16 + gpe-contacts | [] [] | 10 + gpe-edit | [] [] [] [] [] | 22 + gpe-filemanager | [] [] | 7 + gpe-go | [] [] [] [] | 19 + gpe-login | [] [] [] [] [] | 21 + gpe-ownerinfo | [] [] [] [] | 21 + gpe-package | [] | 6 + gpe-sketchbook | [] [] | 16 + gpe-su | [] [] [] [] | 21 + gpe-taskmanager | [] [] [] [] | 21 + gpe-timesheet | [] [] [] [] | 18 + gpe-today | [] [] [] [] [] | 21 + gpe-todo | [] [] | 8 + gphoto2 | [] [] [] [] | 21 + gprof | [] [] | 13 + gpsdrive | [] | 5 + gramadoir | [] | 7 + grep | [] | 12 + gretl | | 6 + gsasl | [] [] [] | 9 + gss | [] | 7 + gst-plugins-bad | [] [] [] | 13 + gst-plugins-base | [] [] | 11 + gst-plugins-good | [] [] [] [] [] | 16 + gst-plugins-ugly | [] [] [] | 13 + gstreamer | [] [] [] | 18 + gtick | [] [] | 7 + gtkam | [] | 16 + gtkorphan | [] | 7 + gtkspell | [] [] [] [] [] [] | 27 + gutenprint | | 4 + hello | [] [] [] [] [] | 38 + herrie | [] [] | 8 + hylafax | | 0 + idutils | [] [] | 15 + indent | [] [] [] [] [] | 28 + iso_15924 | [] [] | 4 + iso_3166 | [] [] [] [] [] [] [] [] [] | 54 + iso_3166_2 | [] [] | 4 + iso_4217 | [] [] [] [] [] | 24 + iso_639 | [] [] [] [] [] | 26 + jpilot | [] [] [] [] | 7 + jtag | [] | 3 + jwhois | [] [] [] | 13 + kbd | [] [] [] | 13 + keytouch | [] | 8 + keytouch-editor | [] | 5 + keytouch-keyboa... | [] | 5 + latrine | [] [] | 5 + ld | [] [] [] [] | 10 + leafpad | [] [] [] [] [] | 24 + libc | [] [] [] | 19 + libexif | [] | 5 + libextractor | [] | 5 + libgpewidget | [] [] [] | 20 + libgpg-error | [] | 6 + libgphoto2 | [] [] | 9 + libgphoto2_port | [] [] [] | 11 + libgsasl | [] | 8 + libiconv | [] [] | 11 + libidn | [] [] | 11 + lifelines | | 4 + lilypond | [] | 6 + lingoteach | [] | 6 + lprng | [] | 2 + lynx | [] [] [] | 15 + m4 | [] [] [] | 18 + mailfromd | [] [] | 3 + mailutils | [] [] | 8 + make | [] [] [] | 20 + man-db | [] | 9 + minicom | [] | 14 + nano | [] [] [] | 20 + opcodes | [] [] | 10 + parted | [] [] [] | 11 + pilot-qof | [] | 1 + popt | [] [] [] [] | 18 + psmisc | [] [] | 10 + pwdutils | [] | 3 + qof | [] | 4 + radius | [] [] | 7 + recode | [] [] [] | 25 + rpm | [] [] [] [] | 13 + screem | [] | 2 + scrollkeeper | [] [] [] [] | 26 + sed | [] [] [] [] | 23 + shared-mime-info | [] [] [] | 29 + sharutils | [] [] [] | 23 + shishi | [] | 3 + skencil | [] | 7 + solfege | [] | 3 + soundtracker | [] [] | 9 + sp | [] | 3 + system-tools-ba... | [] [] [] [] [] [] [] | 38 + tar | [] [] [] | 17 + texinfo | [] [] [] | 15 + tin | | 1 + tuxpaint | [] [] [] | 19 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux | [] [] [] | 20 + util-linux-ng | [] [] [] | 20 + vorbis-tools | [] [] | 4 + wastesedge | | 1 + wdiff | [] [] | 23 + wget | [] [] [] | 20 + xchat | [] [] [] [] | 29 + xkeyboard-config | [] [] [] | 14 + xpad | [] [] [] | 15 + +---------------------------------------------------+ + 76 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu + 163 domains 0 3 1 74 51 0 143 21 1 57 7 45 0 2036 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If November 2007 seems to be old, you may fetch a more recent copy +of this `ABOUT-NLS' file on most GNU archive sites. The most +up-to-date matrix with full percentage details can be found at +`http://translationproject.org/extra/matrix.html'. + +1.6 Using `gettext' in new packages +=================================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`coordinator@translationproject.org' to make the `.pot' files available +to the translation teams. + diff --git a/INSTALL b/INSTALL index 63797550..2a7bf744 100644 --- a/INSTALL +++ b/INSTALL @@ -91,6 +91,11 @@ cygwin packages. You will need at least the following: Use the default "Curr" option for the package selection. +To build an internationalized version of fldigi, install these +additional packages: + + gettext gettext-devel libiconv libiconv2 + PortAudio and libsamplerate are not available from Cygwin and must be compiled from source. If you wish to build easily redistributable binaries, configure these libraries for static linking, e.g. with diff --git a/Makefile.am b/Makefile.am index 23d6c585..9b180577 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ -ACLOCAL_AMFLAGS = -I m4 +ACLOCAL_AMFLAGS = -I m4 -I m4/intl # AC_CONFIG_MACRO_DIR([m4]) -SUBDIRS = src +SUBDIRS = po src if HAVE_FLUID flgen: @@ -17,3 +17,5 @@ if ENABLE_HAMLIB hamlib-static: (cd src && $(MAKE) $(AM_MAKEFLAGS) $@) endif + +EXTRA_DIST = build-aux/config.rpath diff --git a/build-aux/config.rpath b/build-aux/config.rpath new file mode 100755 index 00000000..c547c688 --- /dev/null +++ b/build-aux/config.rpath @@ -0,0 +1,666 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2007 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case $cc_basename in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case $cc_basename in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix4* | aix5*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + library_names_spec='$libname.a' + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd1*) + ;; + freebsd* | dragonfly*) + case "$host_os" in + freebsd[123]*) + library_names_spec='$libname$shrext$versuffix' ;; + *) + library_names_spec='$libname$shrext' ;; + esac + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + nto-qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <= 1.2.4], [yes], [yes], [use hamradio control libraries @<:@autodetect@:>@], [ENABLE_HAMLIB]) +### libintl +# Substitute INTL_CFLAGS in Makefile +# Substitute INTL_LIBS in Makefile +# (default to LIBINTL) +AC_FLDIGI_INTL + ### output AH_TOP([ @@ -225,7 +231,7 @@ AH_BOTTOM([ #include "util.h" #endif /* CONFIG_H_ */ ]) -AC_CONFIG_FILES([Makefile src/Makefile]) +AC_CONFIG_FILES([Makefile src/Makefile po/Makefile.in]) AC_OUTPUT @@ -249,4 +255,6 @@ Configuration summary: hamlib ...................... $ac_cv_hamlib xmlrpc ...................... $ac_cv_xmlrpc + + i18n ........................ $USE_NLS ]) diff --git a/m4/intl/gettext.m4 b/m4/intl/gettext.m4 new file mode 100644 index 00000000..c9ae1f7d --- /dev/null +++ b/m4/intl/gettext.m4 @@ -0,0 +1,381 @@ +# gettext.m4 serial 60 (gettext-0.17) +dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2006. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/m4/intl/iconv.m4 b/m4/intl/iconv.m4 new file mode 100644 index 00000000..66bc76f4 --- /dev/null +++ b/m4/intl/iconv.m4 @@ -0,0 +1,180 @@ +# iconv.m4 serial AM6 (gettext-0.17) +dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [ + dnl This tests against bugs in AIX 5.1 and HP-UX 11.11. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + AC_TRY_RUN([ +#include +#include +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) diff --git a/m4/intl/lib-ld.m4 b/m4/intl/lib-ld.m4 new file mode 100644 index 00000000..96c4e2c3 --- /dev/null +++ b/m4/intl/lib-ld.m4 @@ -0,0 +1,110 @@ +# lib-ld.m4 serial 3 (gettext-0.13) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) diff --git a/m4/intl/lib-link.m4 b/m4/intl/lib-link.m4 new file mode 100644 index 00000000..e3d26fc4 --- /dev/null +++ b/m4/intl/lib-link.m4 @@ -0,0 +1,709 @@ +# lib-link.m4 serial 13 (gettext-0.17) +dnl Copyright (C) 2001-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ(2.54) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + LIB[]NAME[]_PREFIX= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl acl_libext, +dnl acl_shlibext, +dnl acl_hardcode_libdir_flag_spec, +dnl acl_hardcode_libdir_separator, +dnl acl_hardcode_direct, +dnl acl_hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl Autoconf >= 2.61 supports dots in --with options. + define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix], +[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + LIB[]NAME[]_PREFIX="$basedir" + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/m4/intl/lib-prefix.m4 b/m4/intl/lib-prefix.m4 new file mode 100644 index 00000000..a8684e17 --- /dev/null +++ b/m4/intl/lib-prefix.m4 @@ -0,0 +1,185 @@ +# lib-prefix.m4 serial 5 (gettext-0.15) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing +dnl the basename of the libdir, either "lib" or "lib64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. The current + dnl practice is that on a system supporting 32-bit and 64-bit instruction + dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit + dnl libraries go under $prefix/lib. We determine the compiler's default + dnl mode by looking at the compiler's library search path. If at least + dnl of its elements ends in /lib64 or points to a directory whose absolute + dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the + dnl default, namely "lib". + acl_libdirstem=lib + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi +]) diff --git a/m4/intl/nls.m4 b/m4/intl/nls.m4 new file mode 100644 index 00000000..7967cc2f --- /dev/null +++ b/m4/intl/nls.m4 @@ -0,0 +1,31 @@ +# nls.m4 serial 3 (gettext-0.15) +dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) diff --git a/m4/intl/po.m4 b/m4/intl/po.m4 new file mode 100644 index 00000000..0734762a --- /dev/null +++ b/m4/intl/po.m4 @@ -0,0 +1,449 @@ +# po.m4 serial 15 (gettext-0.17) +dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.17]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. + +AC_PREREQ(2.50) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) diff --git a/m4/libintl.m4 b/m4/libintl.m4 new file mode 100644 index 00000000..cf026b42 --- /dev/null +++ b/m4/libintl.m4 @@ -0,0 +1,11 @@ +AC_DEFUN([AC_FLDIGI_INTL], [ + AC_ARG_VAR([INTL_CFLAGS], [C compiler flags for libintl, overriding gettext macros]) + AC_ARG_VAR([INTL_LIBS], [linker flags for libintl, overriding gettext macros]) + + if test "x$INTL_LIBS" = "x"; then + INTL_LIBS="$LIBINTL" + fi + + AC_SUBST([INTL_CFLAGS]) + AC_SUBST([INTL_LIBS]) +]) diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 00000000..527e861b --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1 @@ +fr diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 00000000..8b3991f8 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,430 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# 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.17 +GETTEXT_MACRO_VERSION = 0.17 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version 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@" \ + || { 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; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# 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. +$(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 \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$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 \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && $(SHELL) ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 00000000..15f7c4e7 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Dave Freese, Stelios Bounanos, Leigh Klotz, and others + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = w1hkj AT w1hkj DOT com + +# 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 = diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..3332389d --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,17 @@ +# List of source files which contain translatable strings. + + +src/main.cxx +src/dialogs/fl_digi.cxx +src/dialogs/Viewer.cxx +src/misc/status.cxx +src/misc/debug.cxx +src/mfsk/mfsk-pic.cxx +src/waterfall/waterfall.cxx +src/rigcontrol/FreqControl.cxx +src/rigcontrol/rigsupport.cxx + +# Generated by fluid +src/dialogs/colorsfonts.cxx +src/dialogs/confdialog.cxx +src/rigcontrol/rigdialog.cxx diff --git a/po/Rules-quot b/po/Rules-quot new file mode 100644 index 00000000..9c2a995e --- /dev/null +++ b/po/Rules-quot @@ -0,0 +1,47 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +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; \ + 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 $$ll -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 \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/po/boldquot.sed b/po/boldquot.sed new file mode 100644 index 00000000..4b937aa5 --- /dev/null +++ b/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g +s/“/“/g +s/”/”/g +s/‘/‘/g +s/’/’/g diff --git a/po/en@boldquot.header b/po/en@boldquot.header new file mode 100644 index 00000000..fedb6a06 --- /dev/null +++ b/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/po/en@quot.header b/po/en@quot.header new file mode 100644 index 00000000..a9647fc3 --- /dev/null +++ b/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/po/fldigi.pot b/po/fldigi.pot new file mode 100644 index 00000000..24f42694 --- /dev/null +++ b/po/fldigi.pot @@ -0,0 +1,1995 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Dave Freese, Stelios Bounanos, Leigh Klotz, and others +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: fldigi 3.04BE\n" +"Report-Msgid-Bugs-To: w1hkj AT w1hkj DOT com\n" +"POT-Creation-Date: 2008-11-24 00:37+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/main.cxx:178 +msgid "Could not make directory " +msgstr "" + +#: src/main.cxx:190 +#, c-format +msgid "%s log started on %s" +msgstr "" + +#: src/main.cxx:638 +msgid "" +"License GPLv2+: GNU GPL version 2 or later \n" +"This is free software: you are free to change and redistribute it.\n" +"There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: src/main.cxx:642 +msgid "" +"\n" +"System: " +msgstr "" + +#: src/dialogs/fl_digi.cxx:889 +#, c-format +msgid "" +"Could not run a web browser:\n" +"%s\n" +"\n" +"Open this URL manually:\n" +"%s" +msgstr "" + +#: src/dialogs/fl_digi.cxx:902 +#, c-format +msgid "" +"Could not open url:\n" +"%s\n" +msgstr "" + +#: src/dialogs/fl_digi.cxx:952 +msgid "Checking for updates..." +msgstr "" + +#: src/dialogs/fl_digi.cxx:969 +#, c-format +msgid "" +"Could not check for updates:\n" +"%s" +msgstr "" + +#: src/dialogs/fl_digi.cxx:973 +#, c-format +msgid "" +"Version %s is available at\n" +"\n" +"%s\n" +"\n" +"What would you like to do?" +msgstr "" + +#: src/dialogs/fl_digi.cxx:974 src/dialogs/Viewer.cxx:308 +#: src/mfsk/mfsk-pic.cxx:406 src/dialogs/colorsfonts.cxx:610 +#: src/dialogs/confdialog.cxx:3758 src/rigcontrol/rigdialog.cxx:137 +msgid "Close" +msgstr "" + +#: src/dialogs/fl_digi.cxx:974 +msgid "Visit URL" +msgstr "" + +#: src/dialogs/fl_digi.cxx:974 +msgid "Copy URL" +msgstr "" + +#: src/dialogs/fl_digi.cxx:986 +msgid "You are running the latest version" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1052 +msgid "Sunspot creation underway!" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1059 +msgid "Audio device information is only available for the PortAudio backend" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1238 +msgid "Clear log fields?" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1238 src/dialogs/fl_digi.cxx:1373 +#: src/dialogs/fl_digi.cxx:1384 src/dialogs/fl_digi.cxx:1395 +msgid "Cancel" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1238 +msgid "OK" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1373 +msgid "Save changed configuration before exiting?" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1373 src/dialogs/fl_digi.cxx:1384 +#: src/dialogs/fl_digi.cxx:1395 src/dialogs/fl_digi.cxx:2063 +#: src/dialogs/fl_digi.cxx:2085 src/dialogs/confdialog.cxx:3576 +msgid "Save" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1373 src/dialogs/fl_digi.cxx:1384 +#: src/dialogs/fl_digi.cxx:1395 +msgid "Don't save" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1384 +msgid "Save log before exiting?" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1395 +msgid "Save changed macros before exiting?" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1452 +msgid "&Files" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1453 +msgid "Open macros..." +msgstr "" + +#: src/dialogs/fl_digi.cxx:1454 +msgid "Save macros..." +msgstr "" + +#: src/dialogs/fl_digi.cxx:1455 +msgid "Show config" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1457 src/dialogs/fl_digi.cxx:2597 +#: src/dialogs/fl_digi.cxx:2797 src/misc/status.cxx:91 src/misc/status.cxx:293 +msgid "Log File" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1459 +msgid "Audio" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1460 +msgid "Rx capture" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1461 +msgid "Tx generate" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1462 src/dialogs/confdialog.cxx:3294 +#: src/dialogs/confdialog.cxx:3357 +msgid "Playback" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1465 +msgid "E&xit" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1467 +msgid "Op &Mode" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1564 +msgid "Configure" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1565 +msgid "Operator" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1566 +msgid "Colors && Fonts" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1567 +msgid "User Interface" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1568 +msgid "Waterfall" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1569 +msgid "Modems" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1570 src/dialogs/fl_digi.cxx:1582 +#: src/dialogs/fl_digi.cxx:1631 +msgid "Rig Control" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1571 +msgid "Sound Card" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1572 +msgid "IDs" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1573 src/dialogs/confdialog.cxx:2052 +#: src/dialogs/confdialog.cxx:3651 +msgid "Misc" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1574 src/dialogs/fl_digi.cxx:2051 +#: src/dialogs/fl_digi.cxx:2073 src/dialogs/confdialog.cxx:2929 +msgid "QRZ" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1575 src/dialogs/confdialog.cxx:3755 +msgid "Save Config" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1578 src/dialogs/fl_digi.cxx:1631 +msgid "View" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1579 +msgid "Digiscope" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1580 src/dialogs/fl_digi.cxx:1648 +msgid "MFSK Image" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1581 +msgid "PSK Browser" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1586 +msgid "Help" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1589 +msgid "Create sunspots" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1591 +msgid "Beginners' Guide" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1592 +msgid "Online documentation..." +msgstr "" + +#: src/dialogs/fl_digi.cxx:1593 +msgid "Fldigi web site..." +msgstr "" + +#: src/dialogs/fl_digi.cxx:1594 +msgid "Reception reports..." +msgstr "" + +#: src/dialogs/fl_digi.cxx:1595 +msgid "Command line options" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1596 +msgid "Audio device info" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1597 +msgid "Build info" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1598 src/misc/debug.cxx:68 +msgid "Event log" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1599 +msgid "Check for updates..." +msgstr "" + +#: src/dialogs/fl_digi.cxx:1600 +msgid "About" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1742 +msgid "NO CALLSIGN SET" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1757 +msgid "Close List" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1768 src/dialogs/fl_digi.cxx:1992 +msgid "Open List" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1931 +msgid "No rig specified" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2007 src/dialogs/confdialog.cxx:3019 +msgid "Select" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2014 +msgid "Add current frequency" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2021 src/rigcontrol/rigdialog.cxx:133 +msgid "Clear list" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2028 src/rigcontrol/rigdialog.cxx:128 +msgid "Delete from list" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2032 +msgid "Select operating parameters" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2057 src/dialogs/fl_digi.cxx:2079 +#: src/dialogs/Viewer.cxx:304 +msgid "Clear" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2098 +msgid "QSO Freq" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2101 +msgid "Time" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2108 +msgid "Call" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2111 +msgid "Name" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2158 +msgid "Notes" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2277 +msgid "" +"Left Click - execute\n" +"Right Click - edit" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2286 +msgid "Change macro set" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2336 +msgid "Detected signal level" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2348 +msgid "Squelch level" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2363 +msgid "" +"Left clk - change mode\n" +"Right clk - Modem Tab" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2421 +msgid "AFC on/off" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2424 +msgid "SQL on/off" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2443 +msgid "Scope" +msgstr "" + +#: src/dialogs/Viewer.cxx:280 +msgid "Psk Viewer" +msgstr "" + +#: src/dialogs/Viewer.cxx:286 +msgid "Find: " +msgstr "" + +#: src/dialogs/Viewer.cxx:306 +msgid "" +"Left click to clear text\n" +"Right click to reset frequencies" +msgstr "" + +#: src/dialogs/Viewer.cxx:312 +msgid "Set Viewer Squelch" +msgstr "" + +#: src/misc/debug.cxx:58 +msgid "Quiet" +msgstr "" + +#: src/misc/debug.cxx:58 +msgid "Error" +msgstr "" + +#: src/misc/debug.cxx:58 +msgid "Warning" +msgstr "" + +#: src/misc/debug.cxx:58 +msgid "Info" +msgstr "" + +#: src/misc/debug.cxx:58 +msgid "Debug" +msgstr "" + +#: src/misc/debug.cxx:73 +msgid "Change log level" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:94 +msgid "Save image as:" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:120 +msgid "Save..." +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:126 +msgid "Abort" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:128 +msgid "Hide" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:213 src/mfsk/mfsk-pic.cxx:217 +#: src/mfsk/mfsk-pic.cxx:369 src/mfsk/mfsk-pic.cxx:372 +msgid "Time needed: " +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:246 +msgid "Load image file" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:380 +msgid "Send image" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:387 +msgid "" +"Load or drop an image file\n" +"Supported types: PNG, JPEG, BMP" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:391 +msgid "Transfer speed, X1-normal" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:403 src/dialogs/confdialog.cxx:3573 +msgid "Load" +msgstr "" + +#: src/waterfall/waterfall.cxx:1299 +msgid "Waterfall/FFT - Shift click for signal scope" +msgstr "" + +#: src/waterfall/waterfall.cxx:1309 +msgid "Upper signal level (dB)" +msgstr "" + +#: src/waterfall/waterfall.cxx:1320 +msgid "Signal range (dB)" +msgstr "" + +#: src/waterfall/waterfall.cxx:1326 +msgid "Change waterfall scale" +msgstr "" + +#: src/waterfall/waterfall.cxx:1331 +msgid "Slew display lower in freq" +msgstr "" + +#: src/waterfall/waterfall.cxx:1336 +msgid "Center display on signal" +msgstr "" + +#: src/waterfall/waterfall.cxx:1341 +msgid "Slew display higher in freq" +msgstr "" + +#: src/waterfall/waterfall.cxx:1346 +msgid "Waterfall drop speed" +msgstr "" + +#: src/waterfall/waterfall.cxx:1356 +msgid "Adjust cursor frequency" +msgstr "" + +#: src/waterfall/waterfall.cxx:1361 +msgid "" +"Cntr in Xcvr PB\n" +"Right click to undo" +msgstr "" + +#: src/waterfall/waterfall.cxx:1367 +msgid "" +"Store mode and frequency\n" +"Right click for list" +msgstr "" + +#: src/waterfall/waterfall.cxx:1377 +msgid "Xmt freq locked" +msgstr "" + +#: src/waterfall/waterfall.cxx:1384 +msgid "Reverse" +msgstr "" + +#: src/waterfall/waterfall.cxx:1392 +msgid "Transmit/Receive" +msgstr "" + +#: src/rigcontrol/FreqControl.cxx:130 +msgid "" +"Enter frequency or change with\n" +"Left/Right/Up/Down/Pg_Up/Pg_Down" +msgstr "" + +#: src/rigcontrol/rigsupport.cxx:557 +msgid "Non CAT mode" +msgstr "" + +#: src/rigcontrol/rigsupport.cxx:606 +msgid "Rig Not Specified" +msgstr "" + +#: src/rigcontrol/rigsupport.cxx:640 +msgid "Memory Mapped Rig" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:609 +msgid "Colors and Fonts" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:614 +msgid "Freq Display" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:615 +msgid "8" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:623 +msgid "Background" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:626 +msgid "Foreground" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:629 src/dialogs/colorsfonts.cxx:719 +msgid "System" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:634 +msgid "Func keys" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:636 +msgid "Use colored buttons" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:641 +msgid "Group 1" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:642 +msgid "Background color for Function key group 1" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:647 +msgid "Group 2" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:648 +msgid "Background color for Function key group 2" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:653 +msgid "Group 3" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:654 +msgid "Background color for Function key group 3" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:659 +msgid "Label text" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:664 src/dialogs/colorsfonts.cxx:722 +msgid "Defaults" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:669 +msgid "Text Ctrls" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:677 +msgid "Rx bkgnd" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:680 +msgid "Tx bkgnd" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:689 +msgid "Rx font" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:692 +msgid "Tx font" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:695 +msgid "XMIT" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:696 +msgid "Sent chars in Rx/Tx pane" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:701 +msgid "CTRL" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:702 +msgid "Control chars in Rx/Tx pane" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:707 +msgid "SKIP" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:708 +msgid "" +"Skipped chars in Tx pane\n" +"(Tx on/off in CW)" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:713 +msgid "ALTR" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:714 +msgid "Quick view chars in Rx pane" +msgstr "" + +#: src/dialogs/confdialog.cxx:1955 +msgid "fldigi - config" +msgstr "" + +#: src/dialogs/confdialog.cxx:1957 +msgid "Leading/Trailing Risetimes (msec)" +msgstr "" + +#: src/dialogs/confdialog.cxx:1965 +msgid "Id's" +msgstr "" + +#: src/dialogs/confdialog.cxx:1969 +msgid "Video Preamble ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:1972 +msgid "Xmt Mode ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:1976 +msgid "Xmt Video Text" +msgstr "" + +#: src/dialogs/confdialog.cxx:1981 +msgid "Video Text:" +msgstr "" + +#: src/dialogs/confdialog.cxx:1982 +msgid "Limit to a few characters as in CQEM or IOTA etc." +msgstr "" + +#: src/dialogs/confdialog.cxx:1987 +msgid "Video Width:" +msgstr "" + +#: src/dialogs/confdialog.cxx:1988 +msgid "Set the # of chars per row" +msgstr "" + +#: src/dialogs/confdialog.cxx:2001 +msgid "small font" +msgstr "" + +#: src/dialogs/confdialog.cxx:2009 +msgid "CW Postamble ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:2012 +msgid "Xmt CWID" +msgstr "" + +#: src/dialogs/confdialog.cxx:2013 +msgid "send CW callsign at end of transmission" +msgstr "" + +#: src/dialogs/confdialog.cxx:2018 +msgid "CWID wpm:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2019 +msgid "speed in WPM" +msgstr "" + +#: src/dialogs/confdialog.cxx:2033 +msgid "Reed Solomon ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:2036 +msgid "Transmit RSid" +msgstr "" + +#: src/dialogs/confdialog.cxx:2037 +msgid "Transmit Reed Solomon ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:2042 +msgid "Wide Search Detector" +msgstr "" + +#: src/dialogs/confdialog.cxx:2043 +msgid "Search over entire waterfall" +msgstr "" + +#: src/dialogs/confdialog.cxx:2058 +msgid "CPU" +msgstr "" + +#: src/dialogs/confdialog.cxx:2063 +msgid "Slow cpu" +msgstr "" + +#: src/dialogs/confdialog.cxx:2064 +msgid "select for CPU < 700 MHz" +msgstr "" + +#: src/dialogs/confdialog.cxx:2073 +msgid "Macros" +msgstr "" + +#: src/dialogs/confdialog.cxx:2077 +msgid "load last used Macro file on startup" +msgstr "" + +#: src/dialogs/confdialog.cxx:2082 +msgid "display Macro Filename on startup" +msgstr "" + +#: src/dialogs/confdialog.cxx:2083 +msgid "filename is written to the Rx text area" +msgstr "" + +#: src/dialogs/confdialog.cxx:2092 +msgid "Sweet Spot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2097 src/dialogs/confdialog.cxx:2183 +msgid "CW" +msgstr "" + +#: src/dialogs/confdialog.cxx:2105 src/dialogs/confdialog.cxx:2663 +msgid "RTTY" +msgstr "" + +#: src/dialogs/confdialog.cxx:2113 +msgid "PSK etal" +msgstr "" + +#: src/dialogs/confdialog.cxx:2121 +msgid "Start New Modem at Sweet Spot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2131 +msgid "Spotting" +msgstr "" + +#: src/dialogs/confdialog.cxx:2132 +msgid "PSK Reporter" +msgstr "" + +#: src/dialogs/confdialog.cxx:2135 +msgid "Automatically spot callsigns in decoded text" +msgstr "" + +#: src/dialogs/confdialog.cxx:2140 +msgid "Send reception report when logging a QSO" +msgstr "" + +#: src/dialogs/confdialog.cxx:2145 +msgid "Host:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2150 src/dialogs/confdialog.cxx:2990 +#: src/dialogs/confdialog.cxx:3133 +msgid "Port:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2155 src/dialogs/confdialog.cxx:2994 +#: src/dialogs/confdialog.cxx:3092 src/dialogs/confdialog.cxx:3145 +#: src/dialogs/confdialog.cxx:3232 src/dialogs/confdialog.cxx:3251 +msgid "Initialize" +msgstr "" + +#: src/dialogs/confdialog.cxx:2158 +msgid "" +msgstr "" + +#: src/dialogs/confdialog.cxx:2162 +msgid "Report QRG (enable only if you have rig control!)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2175 +msgid "Modem" +msgstr "" + +#: src/dialogs/confdialog.cxx:2187 +msgid "CW Ops" +msgstr "" + +#: src/dialogs/confdialog.cxx:2191 +msgid "BW" +msgstr "" + +#: src/dialogs/confdialog.cxx:2192 +msgid "DSP filter bandwidth" +msgstr "" + +#: src/dialogs/confdialog.cxx:2204 +msgid "Rx Trkg Rng" +msgstr "" + +#: src/dialogs/confdialog.cxx:2205 +msgid "WPM tracking range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2215 +msgid "Enable Rx Trkg" +msgstr "" + +#: src/dialogs/confdialog.cxx:2222 +msgid "RxWPM" +msgstr "" + +#: src/dialogs/confdialog.cxx:2231 +msgid "TxWPM" +msgstr "" + +#: src/dialogs/confdialog.cxx:2243 +msgid "Lower" +msgstr "" + +#: src/dialogs/confdialog.cxx:2244 +msgid "Lower WPM limit" +msgstr "" + +#: src/dialogs/confdialog.cxx:2254 +msgid "Upper" +msgstr "" + +#: src/dialogs/confdialog.cxx:2255 +msgid "Upper WPM limit" +msgstr "" + +#: src/dialogs/confdialog.cxx:2265 +msgid "Default" +msgstr "" + +#: src/dialogs/confdialog.cxx:2266 +msgid "Default WPM" +msgstr "" + +#: src/dialogs/confdialog.cxx:2280 +msgid "Timing / QSK" +msgstr "" + +#: src/dialogs/confdialog.cxx:2283 +msgid "Timing" +msgstr "" + +#: src/dialogs/confdialog.cxx:2286 +msgid "Wt. %" +msgstr "" + +#: src/dialogs/confdialog.cxx:2287 +msgid "Dot to Dot-Space Ratio" +msgstr "" + +#: src/dialogs/confdialog.cxx:2297 +msgid "Dash/Dot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2298 +msgid "Dash to Dot Ratio" +msgstr "" + +#: src/dialogs/confdialog.cxx:2307 +msgid "Edge" +msgstr "" + +#: src/dialogs/confdialog.cxx:2318 +msgid "QSK" +msgstr "" + +#: src/dialogs/confdialog.cxx:2321 +msgid "QSK on right channel" +msgstr "" + +#: src/dialogs/confdialog.cxx:2322 +msgid "Enable QSK on right Channel" +msgstr "" + +#: src/dialogs/confdialog.cxx:2328 +msgid "Pre Timing" +msgstr "" + +#: src/dialogs/confdialog.cxx:2329 +msgid "Msec pre-keydown" +msgstr "" + +#: src/dialogs/confdialog.cxx:2339 +msgid "Post Timing" +msgstr "" + +#: src/dialogs/confdialog.cxx:2340 +msgid "Msec post-keydown" +msgstr "" + +#: src/dialogs/confdialog.cxx:2358 +msgid "Dom" +msgstr "" + +#: src/dialogs/confdialog.cxx:2362 src/dialogs/confdialog.cxx:2786 +msgid "Secondary Text" +msgstr "" + +#: src/dialogs/confdialog.cxx:2363 src/dialogs/confdialog.cxx:2787 +msgid "Text to send during keyboard idle times" +msgstr "" + +#: src/dialogs/confdialog.cxx:2369 src/dialogs/confdialog.cxx:2793 +msgid "BW factor:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2370 src/dialogs/confdialog.cxx:2794 +msgid "DSP filter BW relative to signal width" +msgstr "" + +#: src/dialogs/confdialog.cxx:2378 src/dialogs/confdialog.cxx:2802 +msgid "Filter ON" +msgstr "" + +#: src/dialogs/confdialog.cxx:2379 src/dialogs/confdialog.cxx:2803 +msgid "Enable DSP filtering" +msgstr "" + +#: src/dialogs/confdialog.cxx:2385 +msgid "FEC" +msgstr "" + +#: src/dialogs/confdialog.cxx:2386 +msgid "Add MultiPSK compatible FEC" +msgstr "" + +#: src/dialogs/confdialog.cxx:2391 src/dialogs/confdialog.cxx:2809 +msgid "Paths" +msgstr "" + +#: src/dialogs/confdialog.cxx:2401 src/dialogs/confdialog.cxx:2825 +msgid "CWI threshold:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2402 src/dialogs/confdialog.cxx:2826 +msgid "CWI detection and suppression" +msgstr "" + +#: src/dialogs/confdialog.cxx:2411 +msgid "Feld" +msgstr "" + +#: src/dialogs/confdialog.cxx:2415 +msgid "Feld Hell Font:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2423 +msgid "Filter BW" +msgstr "" + +#: src/dialogs/confdialog.cxx:2435 +msgid "2x Xmt Width" +msgstr "" + +#: src/dialogs/confdialog.cxx:2441 +msgid "1/2 x Rcv Width" +msgstr "" + +#: src/dialogs/confdialog.cxx:2446 +msgid "blackboard" +msgstr "" + +#: src/dialogs/confdialog.cxx:2451 +msgid "Pulse Shape" +msgstr "" + +#: src/dialogs/confdialog.cxx:2454 +msgid "Fast Attack (2 msec)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2459 +msgid "Slow Attack (4 msec)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2467 +msgid "Xmt (.) Idle Char" +msgstr "" + +#: src/dialogs/confdialog.cxx:2473 +msgid "Xmt Width" +msgstr "" + +#: src/dialogs/confdialog.cxx:2482 +msgid "MT-63" +msgstr "" + +#: src/dialogs/confdialog.cxx:2487 src/dialogs/confdialog.cxx:2535 +msgid "8 bit extended chars" +msgstr "" + +#: src/dialogs/confdialog.cxx:2492 +msgid "64 bit interleave (long)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2501 +msgid "Olivia" +msgstr "" + +#: src/dialogs/confdialog.cxx:2505 +msgid "Tones" +msgstr "" + +#: src/dialogs/confdialog.cxx:2511 +msgid "Bandwidth" +msgstr "" + +#: src/dialogs/confdialog.cxx:2517 +msgid "RX sync tune margin" +msgstr "" + +#: src/dialogs/confdialog.cxx:2526 +msgid "RX sync integration period" +msgstr "" + +#: src/dialogs/confdialog.cxx:2541 +msgid "Psk" +msgstr "" + +#: src/dialogs/confdialog.cxx:2544 src/dialogs/confdialog.cxx:3424 +msgid "General" +msgstr "" + +#: src/dialogs/confdialog.cxx:2546 +msgid "Acq Srch Range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2547 +msgid "Capture signals within this frequency range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2557 +msgid "Acq s/n (db)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2558 +msgid "Capture signals over this threshold" +msgstr "" + +#: src/dialogs/confdialog.cxx:2568 +msgid "S/N, Imd Behavior" +msgstr "" + +#: src/dialogs/confdialog.cxx:2570 +msgid "Dim" +msgstr "" + +#: src/dialogs/confdialog.cxx:2571 +msgid "Check for dimming / uncheck for clear" +msgstr "" + +#: src/dialogs/confdialog.cxx:2576 +msgid "Seconds to " +msgstr "" + +#: src/dialogs/confdialog.cxx:2577 +msgid "Time delay in seconds to dim / clear (0 disables)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2590 +msgid "Mail" +msgstr "" + +#: src/dialogs/confdialog.cxx:2593 +msgid "use sweetspot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2594 +msgid "Return Tx frequency to sweetspot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2600 +msgid "Server Search Range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2601 +msgid "Listen for signals within this range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2613 +msgid "Viewer" +msgstr "" + +#: src/dialogs/confdialog.cxx:2616 +msgid "Marquee style" +msgstr "" + +#: src/dialogs/confdialog.cxx:2617 +msgid "Continuous horizontal scroll of Rx data" +msgstr "" + +#: src/dialogs/confdialog.cxx:2622 +msgid "Show Freq's" +msgstr "" + +#: src/dialogs/confdialog.cxx:2623 +msgid "Show frequencies on left" +msgstr "" + +#: src/dialogs/confdialog.cxx:2628 +msgid "# Channels" +msgstr "" + +#: src/dialogs/confdialog.cxx:2629 +msgid "Number of channels to monitor" +msgstr "" + +#: src/dialogs/confdialog.cxx:2638 +msgid "Start Freq" +msgstr "" + +#: src/dialogs/confdialog.cxx:2647 +msgid "Aging (sec)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2648 +msgid "Clear channel after # seconds inactivity" +msgstr "" + +#: src/dialogs/confdialog.cxx:2667 +msgid "Shift" +msgstr "" + +#: src/dialogs/confdialog.cxx:2673 +msgid "Baud" +msgstr "" + +#: src/dialogs/confdialog.cxx:2679 +msgid "Bits" +msgstr "" + +#: src/dialogs/confdialog.cxx:2685 +msgid "Parity" +msgstr "" + +#: src/dialogs/confdialog.cxx:2691 +msgid "Stop" +msgstr "" + +#: src/dialogs/confdialog.cxx:2697 +msgid "PseudoFSK" +msgstr "" + +#: src/dialogs/confdialog.cxx:2703 +msgid "CR-CR-LF" +msgstr "" + +#: src/dialogs/confdialog.cxx:2710 +msgid "AutoCRLF" +msgstr "" + +#: src/dialogs/confdialog.cxx:2716 +msgid "after:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2725 +msgid "AFC" +msgstr "" + +#: src/dialogs/confdialog.cxx:2729 +msgid "Slow" +msgstr "" + +#: src/dialogs/confdialog.cxx:2735 +msgid "Normal" +msgstr "" + +#: src/dialogs/confdialog.cxx:2742 +msgid "Fast" +msgstr "" + +#: src/dialogs/confdialog.cxx:2750 +msgid "X-scope" +msgstr "" + +#: src/dialogs/confdialog.cxx:2756 +msgid "X-agc" +msgstr "" + +#: src/dialogs/confdialog.cxx:2763 +msgid "Unshift On Space" +msgstr "" + +#: src/dialogs/confdialog.cxx:2766 +msgid "Rx" +msgstr "" + +#: src/dialogs/confdialog.cxx:2772 +msgid "Tx" +msgstr "" + +#: src/dialogs/confdialog.cxx:2782 +msgid "Thor" +msgstr "" + +#: src/dialogs/confdialog.cxx:2819 +msgid "Soft decode" +msgstr "" + +#: src/dialogs/confdialog.cxx:2820 +msgid "Detector thresholds track s/n" +msgstr "" + +#: src/dialogs/confdialog.cxx:2839 +msgid "Oper" +msgstr "" + +#: src/dialogs/confdialog.cxx:2844 +msgid "Callsign:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2847 +msgid "Name:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2850 +msgid "Qth:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2853 +msgid "Locator:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2856 +msgid "Contest Setup" +msgstr "" + +#: src/dialogs/confdialog.cxx:2859 +msgid "Use Leading Zeros" +msgstr "" + +#: src/dialogs/confdialog.cxx:2864 +msgid "Starting #:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2872 +msgid "# of digits:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2882 +msgid "Antenna:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2887 +msgid "Qrz" +msgstr "" + +#: src/dialogs/confdialog.cxx:2891 +msgid "Not available" +msgstr "" + +#: src/dialogs/confdialog.cxx:2897 +msgid "QRZ cdrom" +msgstr "" + +#: src/dialogs/confdialog.cxx:2902 +msgid "QRZ online" +msgstr "" + +#: src/dialogs/confdialog.cxx:2903 +msgid "This service may not be available" +msgstr "" + +#: src/dialogs/confdialog.cxx:2908 +msgid "at:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2909 +msgid "" +"ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database" +msgstr "" + +#: src/dialogs/confdialog.cxx:2913 +msgid "Paid Online Subscription" +msgstr "" + +#: src/dialogs/confdialog.cxx:2916 +msgid "User name" +msgstr "" + +#: src/dialogs/confdialog.cxx:2917 +msgid "subscription user name" +msgstr "" + +#: src/dialogs/confdialog.cxx:2922 +msgid "Password" +msgstr "" + +#: src/dialogs/confdialog.cxx:2923 +msgid "subscription password" +msgstr "" + +#: src/dialogs/confdialog.cxx:2930 +msgid "You need a paid QRZ on-line subscription for access" +msgstr "" + +#: src/dialogs/confdialog.cxx:2935 +msgid "Hamcall" +msgstr "" + +#: src/dialogs/confdialog.cxx:2936 +msgid "You need a paid Hamcall on-line subscription to access" +msgstr "" + +#: src/dialogs/confdialog.cxx:2941 +msgid "Show" +msgstr "" + +#: src/dialogs/confdialog.cxx:2942 +msgid "Show / Hide user password" +msgstr "" + +#: src/dialogs/confdialog.cxx:2950 +msgid "Rig" +msgstr "" + +#: src/dialogs/confdialog.cxx:2954 +msgid "H/W ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:2955 +msgid "Tottle DTR for ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:2957 +msgid "none" +msgstr "" + +#: src/dialogs/confdialog.cxx:2964 +msgid "use Serial Port h/w" +msgstr "" + +#: src/dialogs/confdialog.cxx:2965 +msgid "PTT controlled via serial port" +msgstr "" + +#: src/dialogs/confdialog.cxx:2971 +msgid "RTS" +msgstr "" + +#: src/dialogs/confdialog.cxx:2972 +msgid "Toggle RTS for ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:2976 +msgid "DTR" +msgstr "" + +#: src/dialogs/confdialog.cxx:2980 +msgid "RTS = +V" +msgstr "" + +#: src/dialogs/confdialog.cxx:2981 +msgid "initial voltage on RTS" +msgstr "" + +#: src/dialogs/confdialog.cxx:2985 +msgid "DTR = +V" +msgstr "" + +#: src/dialogs/confdialog.cxx:2986 +msgid "Initial voltage on DTR" +msgstr "" + +#: src/dialogs/confdialog.cxx:2991 src/dialogs/confdialog.cxx:3134 +msgid "Select serial port" +msgstr "" + +#: src/dialogs/confdialog.cxx:2999 +msgid "RigCAT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3000 +msgid "Rig Control using xml spec file" +msgstr "" + +#: src/dialogs/confdialog.cxx:3002 +msgid "use rigCAT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3003 +msgid "Select rigCAT for rig control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3007 +msgid "command PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3008 src/dialogs/confdialog.cxx:3113 +msgid "use PTT data command" +msgstr "" + +#: src/dialogs/confdialog.cxx:3014 +msgid "Xml File" +msgstr "" + +#: src/dialogs/confdialog.cxx:3020 +msgid "Select xml file for your rig" +msgstr "" + +#: src/dialogs/confdialog.cxx:3023 +msgid "Port" +msgstr "" + +#: src/dialogs/confdialog.cxx:3024 +msgid "Select the serial port" +msgstr "" + +#: src/dialogs/confdialog.cxx:3028 +msgid "Baud Rate" +msgstr "" + +#: src/dialogs/confdialog.cxx:3029 +msgid "Select the baud rate" +msgstr "" + +#: src/dialogs/confdialog.cxx:3035 +msgid "rts PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3036 +msgid "toggle RTS for ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:3041 +msgid "dtr PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3042 +msgid "toggle DTR for ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:3047 +msgid "set RTS +12 v" +msgstr "" + +#: src/dialogs/confdialog.cxx:3048 src/dialogs/confdialog.cxx:3189 +msgid "initial state of RTS" +msgstr "" + +#: src/dialogs/confdialog.cxx:3053 +msgid "set DTR +12 v" +msgstr "" + +#: src/dialogs/confdialog.cxx:3054 src/dialogs/confdialog.cxx:3183 +msgid "initial state of DTR" +msgstr "" + +#: src/dialogs/confdialog.cxx:3059 src/dialogs/confdialog.cxx:3149 +msgid "Retries" +msgstr "" + +#: src/dialogs/confdialog.cxx:3060 src/dialogs/confdialog.cxx:3150 +msgid "# times to resend command before FAIL" +msgstr "" + +#: src/dialogs/confdialog.cxx:3070 src/dialogs/confdialog.cxx:3160 +msgid "Timeout" +msgstr "" + +#: src/dialogs/confdialog.cxx:3071 src/dialogs/confdialog.cxx:3161 +msgid "milliseconds between retries" +msgstr "" + +#: src/dialogs/confdialog.cxx:3081 src/dialogs/confdialog.cxx:3171 +msgid "Wait" +msgstr "" + +#: src/dialogs/confdialog.cxx:3082 src/dialogs/confdialog.cxx:3172 +msgid "Wait interval (msec) between commands" +msgstr "" + +#: src/dialogs/confdialog.cxx:3093 +msgid "Initialize RigCAT interface" +msgstr "" + +#: src/dialogs/confdialog.cxx:3096 +msgid "RTS/CTS flow ctl." +msgstr "" + +#: src/dialogs/confdialog.cxx:3097 src/dialogs/confdialog.cxx:3194 +msgid "RTS/CTS hardware flow control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3104 +msgid "Hamlib" +msgstr "" + +#: src/dialogs/confdialog.cxx:3106 +msgid "use Hamlib" +msgstr "" + +#: src/dialogs/confdialog.cxx:3107 +msgid "Select hamlib for rig control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3112 +msgid "use Hamlib PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3119 +msgid "Rig:" +msgstr "" + +#: src/dialogs/confdialog.cxx:3120 +msgid "Select hamlib rig" +msgstr "" + +#: src/dialogs/confdialog.cxx:3138 +msgid "Baud Rate:" +msgstr "" + +#: src/dialogs/confdialog.cxx:3139 +msgid "Select baud rate" +msgstr "" + +#: src/dialogs/confdialog.cxx:3146 +msgid "Initialize Hamlib rig control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3182 +msgid "DTR +12" +msgstr "" + +#: src/dialogs/confdialog.cxx:3188 +msgid "RTS +12" +msgstr "" + +#: src/dialogs/confdialog.cxx:3193 +msgid "RTS/CTS" +msgstr "" + +#: src/dialogs/confdialog.cxx:3199 +msgid "XON/XOFF" +msgstr "" + +#: src/dialogs/confdialog.cxx:3200 +msgid "XON/XOFF hardware flow control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3206 +msgid "" +"Additional configuration\n" +"of format: param=val ..." +msgstr "" + +#: src/dialogs/confdialog.cxx:3212 +msgid "MemMap" +msgstr "" + +#: src/dialogs/confdialog.cxx:3213 +msgid "use Memmap" +msgstr "" + +#: src/dialogs/confdialog.cxx:3214 +msgid "Select Memory Mapping rig control (Kachina)" +msgstr "" + +#: src/dialogs/confdialog.cxx:3219 +msgid "use Memmap PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3237 +msgid "XmlRpc" +msgstr "" + +#: src/dialogs/confdialog.cxx:3239 +msgid "use xmlrpc program" +msgstr "" + +#: src/dialogs/confdialog.cxx:3240 +msgid "experimental" +msgstr "" + +#: src/dialogs/confdialog.cxx:3260 +msgid "SndCrd" +msgstr "" + +#: src/dialogs/confdialog.cxx:3266 +msgid "Audio devices" +msgstr "" + +#: src/dialogs/confdialog.cxx:3272 +msgid "OSS" +msgstr "" + +#: src/dialogs/confdialog.cxx:3277 src/dialogs/confdialog.cxx:3405 +msgid "Device" +msgstr "" + +#: src/dialogs/confdialog.cxx:3285 +msgid "PortAudio" +msgstr "" + +#: src/dialogs/confdialog.cxx:3290 src/dialogs/confdialog.cxx:3367 +msgid "Capture" +msgstr "" + +#: src/dialogs/confdialog.cxx:3302 +msgid "PulseAudio" +msgstr "" + +#: src/dialogs/confdialog.cxx:3307 +msgid "Server" +msgstr "" + +#: src/dialogs/confdialog.cxx:3308 +msgid "" +"Leave this blank or refer to\n" +"http://www.pulseaudio.org/wiki/ServerStrings" +msgstr "" + +#: src/dialogs/confdialog.cxx:3316 +msgid "File I/O only" +msgstr "" + +#: src/dialogs/confdialog.cxx:3325 +msgid "Audio settings" +msgstr "" + +#: src/dialogs/confdialog.cxx:3329 +msgid "RX ppm" +msgstr "" + +#: src/dialogs/confdialog.cxx:3337 +msgid "TX ppm" +msgstr "" + +#: src/dialogs/confdialog.cxx:3345 +msgid "TX offset" +msgstr "" + +#: src/dialogs/confdialog.cxx:3354 +msgid "Sample rate" +msgstr "" + +#: src/dialogs/confdialog.cxx:3358 src/dialogs/confdialog.cxx:3368 +msgid "" +"Force a specific sample rate. Select \"Native\" if \"Auto\" does not work " +"well with your sound hardware." +msgstr "" + +#: src/dialogs/confdialog.cxx:3377 +msgid "Converter" +msgstr "" + +#: src/dialogs/confdialog.cxx:3386 +msgid "Mixer" +msgstr "" + +#: src/dialogs/confdialog.cxx:3389 +msgid "Line In" +msgstr "" + +#: src/dialogs/confdialog.cxx:3393 +msgid "Mic In" +msgstr "" + +#: src/dialogs/confdialog.cxx:3396 +msgid "PCM" +msgstr "" + +#: src/dialogs/confdialog.cxx:3409 +msgid "Manage mixer" +msgstr "" + +#: src/dialogs/confdialog.cxx:3420 +msgid "UI" +msgstr "" + +#: src/dialogs/confdialog.cxx:3427 +msgid "Show Tooltips" +msgstr "" + +#: src/dialogs/confdialog.cxx:3428 +msgid "toggle tooltips on buttons, etc." +msgstr "" + +#: src/dialogs/confdialog.cxx:3434 +msgid "icons on menus" +msgstr "" + +#: src/dialogs/confdialog.cxx:3435 +msgid "toggle menu icons on/off" +msgstr "" + +#: src/dialogs/confdialog.cxx:3440 +msgid "UI scheme" +msgstr "" + +#: src/dialogs/confdialog.cxx:3441 +msgid "change application look and feel" +msgstr "" + +#: src/dialogs/confdialog.cxx:3452 +msgid "QSO logging" +msgstr "" + +#: src/dialogs/confdialog.cxx:3455 +msgid "Nag me" +msgstr "" + +#: src/dialogs/confdialog.cxx:3456 +msgid "exit nag for unsaved log entries" +msgstr "" + +#: src/dialogs/confdialog.cxx:3461 +msgid "Clear on Save" +msgstr "" + +#: src/dialogs/confdialog.cxx:3462 +msgid "Clear log entries after saving or using macro " +msgstr "" + +#: src/dialogs/confdialog.cxx:3471 +msgid "Restart" +msgstr "" + +#: src/dialogs/confdialog.cxx:3473 +msgid "These changes take effect on next program startup" +msgstr "" + +#: src/dialogs/confdialog.cxx:3476 +msgid "Waterfall width in Hz" +msgstr "" + +#: src/dialogs/confdialog.cxx:3477 +msgid "Wider ==> higher cpu usage" +msgstr "" + +#: src/dialogs/confdialog.cxx:3487 +msgid "Waterfall height in pixels" +msgstr "" + +#: src/dialogs/confdialog.cxx:3488 +msgid "Taller ==> higher cpu usage" +msgstr "" + +#: src/dialogs/confdialog.cxx:3498 +msgid "Docked scope" +msgstr "" + +#: src/dialogs/confdialog.cxx:3499 +msgid "Attach digiscope to right of waterfall" +msgstr "" + +#: src/dialogs/confdialog.cxx:3504 +msgid "Docked Rig Control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3505 +msgid "Attach rig control to left of logbook" +msgstr "" + +#: src/dialogs/confdialog.cxx:3511 +msgid "Check button toggle for Sql && AFC" +msgstr "" + +#: src/dialogs/confdialog.cxx:3524 +msgid "Wfall" +msgstr "" + +#: src/dialogs/confdialog.cxx:3530 +msgid "Filters/Colors" +msgstr "" + +#: src/dialogs/confdialog.cxx:3533 +msgid "Palette:" +msgstr "" + +#: src/dialogs/confdialog.cxx:3581 +msgid "Low Freq Cutoff" +msgstr "" + +#: src/dialogs/confdialog.cxx:3591 +msgid "wf averaging" +msgstr "" + +#: src/dialogs/confdialog.cxx:3598 +msgid "Waterfall Font" +msgstr "" + +#: src/dialogs/confdialog.cxx:3605 +msgid "FFT Processing" +msgstr "" + +#: src/dialogs/confdialog.cxx:3607 +msgid "FFT Prefilter" +msgstr "" + +#: src/dialogs/confdialog.cxx:3611 +msgid "Blackman" +msgstr "" + +#: src/dialogs/confdialog.cxx:3616 +msgid "Hamming" +msgstr "" + +#: src/dialogs/confdialog.cxx:3621 +msgid "Hanning" +msgstr "" + +#: src/dialogs/confdialog.cxx:3626 +msgid "Triangular" +msgstr "" + +#: src/dialogs/confdialog.cxx:3633 +msgid "FFT Latency" +msgstr "" + +#: src/dialogs/confdialog.cxx:3636 +msgid "Scan merging:" +msgstr "" + +#: src/dialogs/confdialog.cxx:3637 +msgid "1 = none" +msgstr "" + +#: src/dialogs/confdialog.cxx:3655 +msgid "Cursor BW" +msgstr "" + +#: src/dialogs/confdialog.cxx:3660 +msgid "BW Tracks" +msgstr "" + +#: src/dialogs/confdialog.cxx:3665 +msgid "Cursor Center" +msgstr "" + +#: src/dialogs/confdialog.cxx:3671 +msgid "Select Cursor BW color" +msgstr "" + +#: src/dialogs/confdialog.cxx:3677 +msgid "Select Center Line color" +msgstr "" + +#: src/dialogs/confdialog.cxx:3683 +msgid "Select BW tracks color" +msgstr "" + +#: src/dialogs/confdialog.cxx:3688 +msgid "show Audio Scale" +msgstr "" + +#: src/dialogs/confdialog.cxx:3693 +msgid "View Tx Signal" +msgstr "" + +#: src/dialogs/confdialog.cxx:3698 +msgid "Tx Audio Monitor Level" +msgstr "" + +#: src/dialogs/confdialog.cxx:3713 +msgid "Mouse" +msgstr "" + +#: src/dialogs/confdialog.cxx:3717 +msgid "Left/Right click always replays history" +msgstr "" + +#: src/dialogs/confdialog.cxx:3718 +msgid "Disabled - Ctrl-Lft click plays history" +msgstr "" + +#: src/dialogs/confdialog.cxx:3723 +msgid "Dragging changes frequency" +msgstr "" + +#: src/dialogs/confdialog.cxx:3724 +msgid "Drag mouse on waterfall scale to change frequency" +msgstr "" + +#: src/dialogs/confdialog.cxx:3733 +msgid "Insert text on left click" +msgstr "" + +#: src/dialogs/confdialog.cxx:3734 +msgid "Default - double click on waterfall inserts text" +msgstr "" + +#: src/dialogs/confdialog.cxx:3741 +msgid "Wheel action" +msgstr "" + +#: src/dialogs/confdialog.cxx:3742 +msgid "Select how Mouse wheel behaves on waterfall" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:70 +msgid "Rig Controller" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:73 +msgid "9" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:87 +msgid "" +"Select operating mode and frequency\n" +"Middle click to replace, Shift-left click to delete" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:122 +msgid "@|>" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:123 +msgid "Add to list" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:127 +msgid "@-11+" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:132 +msgid "@-1square" +msgstr "" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 00000000..738d9753 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,2024 @@ +# French translations for fldigi package +# Traductions françaises du paquet fldigi. +# Copyright (C) 2008 Dave Freese, Stelios Bounanos, Leigh Klotz, and others +# This file is distributed under the same license as the fldigi package. +# Stephane Fillod , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: fldigi 3.04AZ\n" +"Report-Msgid-Bugs-To: w1hkj AT w1hkj DOT com\n" +"POT-Creation-Date: 2008-11-24 00:37+0000\n" +"PO-Revision-Date: 2008-11-22 16:30+0100\n" +"Last-Translator: Stephane Fillod \n" +"Language-Team: French\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/main.cxx:178 +msgid "Could not make directory " +msgstr "Ne peut pas créer le répertoire" + +#: src/main.cxx:190 +#, c-format +msgid "%s log started on %s" +msgstr "%s log démarré le %s" + +#: src/main.cxx:638 +msgid "" +"License GPLv2+: GNU GPL version 2 or later \n" +"This is free software: you are free to change and redistribute it.\n" +"There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"Licence GPLv2+: GNU GPL version 2 ou ultérieure \n" +"Ceci est un logiciel libre : vous êtes libre de le modifier et de le " +"redistribuer.\n" +"Ce logiciel n'offre pas d'autre garantie que celle imposée par la loi.\n" + +#: src/main.cxx:642 +msgid "" +"\n" +"System: " +msgstr "" +"\n" +"Système: " + +#: src/dialogs/fl_digi.cxx:889 +#, c-format +msgid "" +"Could not run a web browser:\n" +"%s\n" +"\n" +"Open this URL manually:\n" +"%s" +msgstr "" + +#: src/dialogs/fl_digi.cxx:902 +#, c-format +msgid "" +"Could not open url:\n" +"%s\n" +msgstr "" +"Echec d'ouverture d'url:\n" +"%s\n" + +#: src/dialogs/fl_digi.cxx:952 +msgid "Checking for updates..." +msgstr "Rechercher des mises à jour..." + +#: src/dialogs/fl_digi.cxx:969 +#, c-format +msgid "" +"Could not check for updates:\n" +"%s" +msgstr "" +"Echec de recherche de mises à jour:\n" +"%s" + +#: src/dialogs/fl_digi.cxx:973 +#, c-format +msgid "" +"Version %s is available at\n" +"\n" +"%s\n" +"\n" +"What would you like to do?" +msgstr "" +"La version %s est disponible chez\n" +"\n" +"%s\n" +"\n" +"Que voulez vous faire?" + +#: src/dialogs/fl_digi.cxx:974 src/dialogs/Viewer.cxx:308 +#: src/mfsk/mfsk-pic.cxx:406 src/dialogs/colorsfonts.cxx:610 +#: src/dialogs/confdialog.cxx:3758 src/rigcontrol/rigdialog.cxx:137 +msgid "Close" +msgstr "Fermer" + +#: src/dialogs/fl_digi.cxx:974 +msgid "Visit URL" +msgstr "Visiter l'URL" + +#: src/dialogs/fl_digi.cxx:974 +msgid "Copy URL" +msgstr "Copier l'URL" + +#: src/dialogs/fl_digi.cxx:986 +msgid "You are running the latest version" +msgstr "Vous utilisez déjà la dernière version" + +#: src/dialogs/fl_digi.cxx:1052 +msgid "Sunspot creation underway!" +msgstr "Création sunspot en cours!" + +#: src/dialogs/fl_digi.cxx:1059 +msgid "Audio device information is only available for the PortAudio backend" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1238 +msgid "Clear log fields?" +msgstr "Efface champ de log?" + +#: src/dialogs/fl_digi.cxx:1238 src/dialogs/fl_digi.cxx:1373 +#: src/dialogs/fl_digi.cxx:1384 src/dialogs/fl_digi.cxx:1395 +msgid "Cancel" +msgstr "Annuler" + +#: src/dialogs/fl_digi.cxx:1238 +msgid "OK" +msgstr "OK" + +#: src/dialogs/fl_digi.cxx:1373 +msgid "Save changed configuration before exiting?" +msgstr "Sauvegarder la configuration avant de quitter?" + +#: src/dialogs/fl_digi.cxx:1373 src/dialogs/fl_digi.cxx:1384 +#: src/dialogs/fl_digi.cxx:1395 src/dialogs/fl_digi.cxx:2063 +#: src/dialogs/fl_digi.cxx:2085 src/dialogs/confdialog.cxx:3576 +msgid "Save" +msgstr "Sauvegarde" + +#: src/dialogs/fl_digi.cxx:1373 src/dialogs/fl_digi.cxx:1384 +#: src/dialogs/fl_digi.cxx:1395 +msgid "Don't save" +msgstr "Ne pas sauvegarder" + +#: src/dialogs/fl_digi.cxx:1384 +msgid "Save log before exiting?" +msgstr "Sauvegarder le log avant de quitter?" + +#: src/dialogs/fl_digi.cxx:1395 +msgid "Save changed macros before exiting?" +msgstr "Sauvegarder les macros avant de quitter?" + +#: src/dialogs/fl_digi.cxx:1452 +msgid "&Files" +msgstr "&Fichiers" + +#: src/dialogs/fl_digi.cxx:1453 +msgid "Open macros..." +msgstr "Ouvrir macros..." + +#: src/dialogs/fl_digi.cxx:1454 +msgid "Save macros..." +msgstr "Enregistrer macros..." + +#: src/dialogs/fl_digi.cxx:1455 +msgid "Show config" +msgstr "Montrer config" + +#: src/dialogs/fl_digi.cxx:1457 src/dialogs/fl_digi.cxx:2597 +#: src/dialogs/fl_digi.cxx:2797 src/misc/status.cxx:91 src/misc/status.cxx:293 +msgid "Log File" +msgstr "Fichier de Log" + +#: src/dialogs/fl_digi.cxx:1459 +msgid "Audio" +msgstr "Audio" + +#: src/dialogs/fl_digi.cxx:1460 +msgid "Rx capture" +msgstr "Capture rx" + +#: src/dialogs/fl_digi.cxx:1461 +msgid "Tx generate" +msgstr "Génération TX" + +#: src/dialogs/fl_digi.cxx:1462 src/dialogs/confdialog.cxx:3294 +#: src/dialogs/confdialog.cxx:3357 +msgid "Playback" +msgstr "Sortie" + +#: src/dialogs/fl_digi.cxx:1465 +msgid "E&xit" +msgstr "&Quitter" + +#: src/dialogs/fl_digi.cxx:1467 +msgid "Op &Mode" +msgstr "Op &Mode" + +#: src/dialogs/fl_digi.cxx:1564 +msgid "Configure" +msgstr "Configuration" + +#: src/dialogs/fl_digi.cxx:1565 +msgid "Operator" +msgstr "Opérateur" + +#: src/dialogs/fl_digi.cxx:1566 +msgid "Colors && Fonts" +msgstr "Couleurs && Polices" + +#: src/dialogs/fl_digi.cxx:1567 +msgid "User Interface" +msgstr "Interface Utilisateur" + +#: src/dialogs/fl_digi.cxx:1568 +msgid "Waterfall" +msgstr "Chute d'eau" + +#: src/dialogs/fl_digi.cxx:1569 +msgid "Modems" +msgstr "Modems" + +#: src/dialogs/fl_digi.cxx:1570 src/dialogs/fl_digi.cxx:1582 +#: src/dialogs/fl_digi.cxx:1631 +msgid "Rig Control" +msgstr "Control Radio" + +#: src/dialogs/fl_digi.cxx:1571 +msgid "Sound Card" +msgstr "Carte Son" + +#: src/dialogs/fl_digi.cxx:1572 +msgid "IDs" +msgstr "IDs" + +#: src/dialogs/fl_digi.cxx:1573 src/dialogs/confdialog.cxx:2052 +#: src/dialogs/confdialog.cxx:3651 +msgid "Misc" +msgstr "Divers" + +#: src/dialogs/fl_digi.cxx:1574 src/dialogs/fl_digi.cxx:2051 +#: src/dialogs/fl_digi.cxx:2073 src/dialogs/confdialog.cxx:2929 +msgid "QRZ" +msgstr "QRZ" + +#: src/dialogs/fl_digi.cxx:1575 src/dialogs/confdialog.cxx:3755 +msgid "Save Config" +msgstr "Sauvegarde Config" + +#: src/dialogs/fl_digi.cxx:1578 src/dialogs/fl_digi.cxx:1631 +msgid "View" +msgstr "Vue" + +#: src/dialogs/fl_digi.cxx:1579 +msgid "Digiscope" +msgstr "Digiscope" + +#: src/dialogs/fl_digi.cxx:1580 src/dialogs/fl_digi.cxx:1648 +msgid "MFSK Image" +msgstr "Image MFSK" + +#: src/dialogs/fl_digi.cxx:1581 +msgid "PSK Browser" +msgstr "Navigateur PSK" + +#: src/dialogs/fl_digi.cxx:1586 +msgid "Help" +msgstr "Aide" + +#: src/dialogs/fl_digi.cxx:1589 +msgid "Create sunspots" +msgstr "Créatio sunspots" + +#: src/dialogs/fl_digi.cxx:1591 +msgid "Beginners' Guide" +msgstr "Guide Débutants" + +#: src/dialogs/fl_digi.cxx:1592 +msgid "Online documentation..." +msgstr "Documentation en ligne..." + +#: src/dialogs/fl_digi.cxx:1593 +msgid "Fldigi web site..." +msgstr "Site web Fldigi..." + +#: src/dialogs/fl_digi.cxx:1594 +msgid "Reception reports..." +msgstr "Rapport d'écoute..." + +#: src/dialogs/fl_digi.cxx:1595 +msgid "Command line options" +msgstr "Options ligne de commande" + +#: src/dialogs/fl_digi.cxx:1596 +msgid "Audio device info" +msgstr "Info périphérique audio" + +#: src/dialogs/fl_digi.cxx:1597 +msgid "Build info" +msgstr "" + +#: src/dialogs/fl_digi.cxx:1598 src/misc/debug.cxx:68 +msgid "Event log" +msgstr "Historique événements" + +#: src/dialogs/fl_digi.cxx:1599 +msgid "Check for updates..." +msgstr "Rechercher des mises à jour..." + +#: src/dialogs/fl_digi.cxx:1600 +msgid "About" +msgstr "À propos" + +#: src/dialogs/fl_digi.cxx:1742 +msgid "NO CALLSIGN SET" +msgstr "PAS D'INDICATIF" + +#: src/dialogs/fl_digi.cxx:1757 +msgid "Close List" +msgstr "Fermer Liste" + +#: src/dialogs/fl_digi.cxx:1768 src/dialogs/fl_digi.cxx:1992 +msgid "Open List" +msgstr "Ouvrir Liste" + +#: src/dialogs/fl_digi.cxx:1931 +msgid "No rig specified" +msgstr "Aucune radio spécifiée" + +#: src/dialogs/fl_digi.cxx:2007 src/dialogs/confdialog.cxx:3019 +msgid "Select" +msgstr "Sélectionne" + +#: src/dialogs/fl_digi.cxx:2014 +msgid "Add current frequency" +msgstr "Ajoute fréquence courante" + +#: src/dialogs/fl_digi.cxx:2021 src/rigcontrol/rigdialog.cxx:133 +msgid "Clear list" +msgstr "Efface Liste" + +#: src/dialogs/fl_digi.cxx:2028 src/rigcontrol/rigdialog.cxx:128 +msgid "Delete from list" +msgstr "Supprimer de la Liste" + +#: src/dialogs/fl_digi.cxx:2032 +msgid "Select operating parameters" +msgstr "Sélectionne paramètres opératoires" + +#: src/dialogs/fl_digi.cxx:2057 src/dialogs/fl_digi.cxx:2079 +#: src/dialogs/Viewer.cxx:304 +msgid "Clear" +msgstr "Effacer" + +#: src/dialogs/fl_digi.cxx:2098 +msgid "QSO Freq" +msgstr "" + +#: src/dialogs/fl_digi.cxx:2101 +msgid "Time" +msgstr "Heure" + +#: src/dialogs/fl_digi.cxx:2108 +msgid "Call" +msgstr "Indicatif" + +#: src/dialogs/fl_digi.cxx:2111 +msgid "Name" +msgstr "Nom" + +#: src/dialogs/fl_digi.cxx:2158 +msgid "Notes" +msgstr "Notes" + +#: src/dialogs/fl_digi.cxx:2277 +msgid "" +"Left Click - execute\n" +"Right Click - edit" +msgstr "" +"Clic Gauche - exécute\n" +"Clic Droit - édite" + +#: src/dialogs/fl_digi.cxx:2286 +msgid "Change macro set" +msgstr "Change d'ensemble de macro" + +#: src/dialogs/fl_digi.cxx:2336 +msgid "Detected signal level" +msgstr "Détecte le niveau de signal" + +#: src/dialogs/fl_digi.cxx:2348 +msgid "Squelch level" +msgstr "Niveau squelch" + +#: src/dialogs/fl_digi.cxx:2363 +msgid "" +"Left clk - change mode\n" +"Right clk - Modem Tab" +msgstr "" +"Clic Gauche - change mode\n" +"Clic Droit - Onglet modem" + +#: src/dialogs/fl_digi.cxx:2421 +msgid "AFC on/off" +msgstr "AFC marche/arrêt" + +#: src/dialogs/fl_digi.cxx:2424 +msgid "SQL on/off" +msgstr "SQL marche/arrêt" + +#: src/dialogs/fl_digi.cxx:2443 +msgid "Scope" +msgstr "Scope" + +#: src/dialogs/Viewer.cxx:280 +msgid "Psk Viewer" +msgstr "Visualiseur Psk" + +#: src/dialogs/Viewer.cxx:286 +msgid "Find: " +msgstr "Cherche: " + +#: src/dialogs/Viewer.cxx:306 +msgid "" +"Left click to clear text\n" +"Right click to reset frequencies" +msgstr "" +"Clic gauche pour effacer le texte\n" +"Clic droit pour reset fréquences" + +#: src/dialogs/Viewer.cxx:312 +msgid "Set Viewer Squelch" +msgstr "Positionne le Squelch Visualiseur" + +#: src/misc/debug.cxx:58 +msgid "Quiet" +msgstr "Calme" + +#: src/misc/debug.cxx:58 +msgid "Error" +msgstr "Erreur" + +#: src/misc/debug.cxx:58 +msgid "Warning" +msgstr "Avertissement" + +#: src/misc/debug.cxx:58 +msgid "Info" +msgstr "Info" + +#: src/misc/debug.cxx:58 +msgid "Debug" +msgstr "Débug" + +#: src/misc/debug.cxx:73 +msgid "Change log level" +msgstr "Change niveau de log" + +#: src/mfsk/mfsk-pic.cxx:94 +msgid "Save image as:" +msgstr "Sauvegarde image sous:" + +#: src/mfsk/mfsk-pic.cxx:120 +msgid "Save..." +msgstr "Sauvegarder..." + +#: src/mfsk/mfsk-pic.cxx:126 +msgid "Abort" +msgstr "À propos" + +#: src/mfsk/mfsk-pic.cxx:128 +msgid "Hide" +msgstr "Cacher" + +#: src/mfsk/mfsk-pic.cxx:213 src/mfsk/mfsk-pic.cxx:217 +#: src/mfsk/mfsk-pic.cxx:369 src/mfsk/mfsk-pic.cxx:372 +msgid "Time needed: " +msgstr "Temps nécessaire: " + +#: src/mfsk/mfsk-pic.cxx:246 +msgid "Load image file" +msgstr "Charge fichier image" + +#: src/mfsk/mfsk-pic.cxx:380 +msgid "Send image" +msgstr "Envoyer image" + +#: src/mfsk/mfsk-pic.cxx:387 +msgid "" +"Load or drop an image file\n" +"Supported types: PNG, JPEG, BMP" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:391 +msgid "Transfer speed, X1-normal" +msgstr "" + +#: src/mfsk/mfsk-pic.cxx:403 src/dialogs/confdialog.cxx:3573 +msgid "Load" +msgstr "Charge" + +#: src/waterfall/waterfall.cxx:1299 +msgid "Waterfall/FFT - Shift click for signal scope" +msgstr "Chute d'eau/FFT - Shift clic pour scope signal" + +#: src/waterfall/waterfall.cxx:1309 +msgid "Upper signal level (dB)" +msgstr "Niveau haut de signal (dB)" + +#: src/waterfall/waterfall.cxx:1320 +msgid "Signal range (dB)" +msgstr "Plage du signal (dB)" + +#: src/waterfall/waterfall.cxx:1326 +msgid "Change waterfall scale" +msgstr "Change échelle chute d'eau" + +#: src/waterfall/waterfall.cxx:1331 +msgid "Slew display lower in freq" +msgstr "Décale l'affichage vers fréquences basse" + +#: src/waterfall/waterfall.cxx:1336 +msgid "Center display on signal" +msgstr "Centre affichage sur signal" + +#: src/waterfall/waterfall.cxx:1341 +msgid "Slew display higher in freq" +msgstr "Décale l'affichage vers fréquences hautes" + +#: src/waterfall/waterfall.cxx:1346 +msgid "Waterfall drop speed" +msgstr "Vistesse chute d'eau" + +#: src/waterfall/waterfall.cxx:1356 +msgid "Adjust cursor frequency" +msgstr "Ajuste fréquence curseur" + +#: src/waterfall/waterfall.cxx:1361 +msgid "" +"Cntr in Xcvr PB\n" +"Right click to undo" +msgstr "" +"Cntr in Xcvr PB\n" +"Clic droit pour défaire" + +#: src/waterfall/waterfall.cxx:1367 +msgid "" +"Store mode and frequency\n" +"Right click for list" +msgstr "" +"Enregistre le mode et la fréquence\n" +"Clic droit pour la liste" + +#: src/waterfall/waterfall.cxx:1377 +msgid "Xmt freq locked" +msgstr "Fréquence émission verrouillée" + +#: src/waterfall/waterfall.cxx:1384 +msgid "Reverse" +msgstr "Inverse" + +#: src/waterfall/waterfall.cxx:1392 +msgid "Transmit/Receive" +msgstr "Transmet/Reçoit" + +#: src/rigcontrol/FreqControl.cxx:130 +msgid "" +"Enter frequency or change with\n" +"Left/Right/Up/Down/Pg_Up/Pg_Down" +msgstr "" +"Entrer fréquence ou changer avec\n" +"Gauche/Droite/Haut/Bas/Pg_Haut/Pg_Bas" + +#: src/rigcontrol/rigsupport.cxx:557 +msgid "Non CAT mode" +msgstr "Mode hors CAT" + +#: src/rigcontrol/rigsupport.cxx:606 +msgid "Rig Not Specified" +msgstr "Aucune radio spécifiée" + +#: src/rigcontrol/rigsupport.cxx:640 +msgid "Memory Mapped Rig" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:609 +msgid "Colors and Fonts" +msgstr "Couleurs et Polices" + +#: src/dialogs/colorsfonts.cxx:614 +msgid "Freq Display" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:615 +msgid "8" +msgstr "8" + +#: src/dialogs/colorsfonts.cxx:623 +msgid "Background" +msgstr "Arrière plan" + +#: src/dialogs/colorsfonts.cxx:626 +msgid "Foreground" +msgstr "Avant plan" + +#: src/dialogs/colorsfonts.cxx:629 src/dialogs/colorsfonts.cxx:719 +msgid "System" +msgstr "Système" + +#: src/dialogs/colorsfonts.cxx:634 +msgid "Func keys" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:636 +msgid "Use colored buttons" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:641 +msgid "Group 1" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:642 +msgid "Background color for Function key group 1" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:647 +msgid "Group 2" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:648 +msgid "Background color for Function key group 2" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:653 +msgid "Group 3" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:654 +msgid "Background color for Function key group 3" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:659 +msgid "Label text" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:664 src/dialogs/colorsfonts.cxx:722 +msgid "Defaults" +msgstr "Défauts" + +#: src/dialogs/colorsfonts.cxx:669 +msgid "Text Ctrls" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:677 +msgid "Rx bkgnd" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:680 +msgid "Tx bkgnd" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:689 +msgid "Rx font" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:692 +msgid "Tx font" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:695 +msgid "XMIT" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:696 +msgid "Sent chars in Rx/Tx pane" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:701 +msgid "CTRL" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:702 +msgid "Control chars in Rx/Tx pane" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:707 +msgid "SKIP" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:708 +msgid "" +"Skipped chars in Tx pane\n" +"(Tx on/off in CW)" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:713 +msgid "ALTR" +msgstr "" + +#: src/dialogs/colorsfonts.cxx:714 +msgid "Quick view chars in Rx pane" +msgstr "" + +#: src/dialogs/confdialog.cxx:1955 +msgid "fldigi - config" +msgstr "" + +#: src/dialogs/confdialog.cxx:1957 +msgid "Leading/Trailing Risetimes (msec)" +msgstr "" + +#: src/dialogs/confdialog.cxx:1965 +msgid "Id's" +msgstr "" + +#: src/dialogs/confdialog.cxx:1969 +msgid "Video Preamble ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:1972 +msgid "Xmt Mode ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:1976 +msgid "Xmt Video Text" +msgstr "" + +#: src/dialogs/confdialog.cxx:1981 +msgid "Video Text:" +msgstr "" + +#: src/dialogs/confdialog.cxx:1982 +msgid "Limit to a few characters as in CQEM or IOTA etc." +msgstr "" + +#: src/dialogs/confdialog.cxx:1987 +msgid "Video Width:" +msgstr "" + +#: src/dialogs/confdialog.cxx:1988 +msgid "Set the # of chars per row" +msgstr "" + +#: src/dialogs/confdialog.cxx:2001 +msgid "small font" +msgstr "" + +#: src/dialogs/confdialog.cxx:2009 +msgid "CW Postamble ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:2012 +msgid "Xmt CWID" +msgstr "" + +#: src/dialogs/confdialog.cxx:2013 +msgid "send CW callsign at end of transmission" +msgstr "" + +#: src/dialogs/confdialog.cxx:2018 +msgid "CWID wpm:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2019 +msgid "speed in WPM" +msgstr "vitesse en WPM" + +#: src/dialogs/confdialog.cxx:2033 +msgid "Reed Solomon ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:2036 +msgid "Transmit RSid" +msgstr "Transmet RSid" + +#: src/dialogs/confdialog.cxx:2037 +msgid "Transmit Reed Solomon ID" +msgstr "" + +#: src/dialogs/confdialog.cxx:2042 +msgid "Wide Search Detector" +msgstr "" + +#: src/dialogs/confdialog.cxx:2043 +msgid "Search over entire waterfall" +msgstr "" + +#: src/dialogs/confdialog.cxx:2058 +msgid "CPU" +msgstr "" + +#: src/dialogs/confdialog.cxx:2063 +msgid "Slow cpu" +msgstr "" + +#: src/dialogs/confdialog.cxx:2064 +msgid "select for CPU < 700 MHz" +msgstr "" + +#: src/dialogs/confdialog.cxx:2073 +msgid "Macros" +msgstr "" + +#: src/dialogs/confdialog.cxx:2077 +msgid "load last used Macro file on startup" +msgstr "" + +#: src/dialogs/confdialog.cxx:2082 +msgid "display Macro Filename on startup" +msgstr "" + +#: src/dialogs/confdialog.cxx:2083 +msgid "filename is written to the Rx text area" +msgstr "" + +#: src/dialogs/confdialog.cxx:2092 +msgid "Sweet Spot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2097 src/dialogs/confdialog.cxx:2183 +msgid "CW" +msgstr "" + +#: src/dialogs/confdialog.cxx:2105 src/dialogs/confdialog.cxx:2663 +msgid "RTTY" +msgstr "" + +#: src/dialogs/confdialog.cxx:2113 +msgid "PSK etal" +msgstr "" + +#: src/dialogs/confdialog.cxx:2121 +msgid "Start New Modem at Sweet Spot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2131 +msgid "Spotting" +msgstr "" + +#: src/dialogs/confdialog.cxx:2132 +msgid "PSK Reporter" +msgstr "" + +#: src/dialogs/confdialog.cxx:2135 +msgid "Automatically spot callsigns in decoded text" +msgstr "" + +#: src/dialogs/confdialog.cxx:2140 +msgid "Send reception report when logging a QSO" +msgstr "" + +#: src/dialogs/confdialog.cxx:2145 +msgid "Host:" +msgstr "Hôte:" + +#: src/dialogs/confdialog.cxx:2150 src/dialogs/confdialog.cxx:2990 +#: src/dialogs/confdialog.cxx:3133 +msgid "Port:" +msgstr "Port:" + +#: src/dialogs/confdialog.cxx:2155 src/dialogs/confdialog.cxx:2994 +#: src/dialogs/confdialog.cxx:3092 src/dialogs/confdialog.cxx:3145 +#: src/dialogs/confdialog.cxx:3232 src/dialogs/confdialog.cxx:3251 +msgid "Initialize" +msgstr "Initialise" + +#: src/dialogs/confdialog.cxx:2158 +msgid "" +msgstr "" + +#: src/dialogs/confdialog.cxx:2162 +msgid "Report QRG (enable only if you have rig control!)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2175 +msgid "Modem" +msgstr "Modem" + +#: src/dialogs/confdialog.cxx:2187 +msgid "CW Ops" +msgstr "" + +#: src/dialogs/confdialog.cxx:2191 +msgid "BW" +msgstr "" + +#: src/dialogs/confdialog.cxx:2192 +msgid "DSP filter bandwidth" +msgstr "" + +#: src/dialogs/confdialog.cxx:2204 +msgid "Rx Trkg Rng" +msgstr "" + +#: src/dialogs/confdialog.cxx:2205 +msgid "WPM tracking range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2215 +msgid "Enable Rx Trkg" +msgstr "" + +#: src/dialogs/confdialog.cxx:2222 +msgid "RxWPM" +msgstr "" + +#: src/dialogs/confdialog.cxx:2231 +msgid "TxWPM" +msgstr "" + +#: src/dialogs/confdialog.cxx:2243 +msgid "Lower" +msgstr "" + +#: src/dialogs/confdialog.cxx:2244 +msgid "Lower WPM limit" +msgstr "" + +#: src/dialogs/confdialog.cxx:2254 +msgid "Upper" +msgstr "" + +#: src/dialogs/confdialog.cxx:2255 +msgid "Upper WPM limit" +msgstr "" + +#: src/dialogs/confdialog.cxx:2265 +msgid "Default" +msgstr "Défaut" + +#: src/dialogs/confdialog.cxx:2266 +msgid "Default WPM" +msgstr "WPM par défaut" + +#: src/dialogs/confdialog.cxx:2280 +msgid "Timing / QSK" +msgstr "" + +#: src/dialogs/confdialog.cxx:2283 +msgid "Timing" +msgstr "" + +#: src/dialogs/confdialog.cxx:2286 +msgid "Wt. %" +msgstr "" + +#: src/dialogs/confdialog.cxx:2287 +msgid "Dot to Dot-Space Ratio" +msgstr "" + +#: src/dialogs/confdialog.cxx:2297 +msgid "Dash/Dot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2298 +msgid "Dash to Dot Ratio" +msgstr "" + +#: src/dialogs/confdialog.cxx:2307 +msgid "Edge" +msgstr "" + +#: src/dialogs/confdialog.cxx:2318 +msgid "QSK" +msgstr "" + +#: src/dialogs/confdialog.cxx:2321 +msgid "QSK on right channel" +msgstr "" + +#: src/dialogs/confdialog.cxx:2322 +msgid "Enable QSK on right Channel" +msgstr "" + +#: src/dialogs/confdialog.cxx:2328 +msgid "Pre Timing" +msgstr "" + +#: src/dialogs/confdialog.cxx:2329 +msgid "Msec pre-keydown" +msgstr "" + +#: src/dialogs/confdialog.cxx:2339 +msgid "Post Timing" +msgstr "" + +#: src/dialogs/confdialog.cxx:2340 +msgid "Msec post-keydown" +msgstr "" + +#: src/dialogs/confdialog.cxx:2358 +msgid "Dom" +msgstr "" + +#: src/dialogs/confdialog.cxx:2362 src/dialogs/confdialog.cxx:2786 +msgid "Secondary Text" +msgstr "" + +#: src/dialogs/confdialog.cxx:2363 src/dialogs/confdialog.cxx:2787 +msgid "Text to send during keyboard idle times" +msgstr "" + +#: src/dialogs/confdialog.cxx:2369 src/dialogs/confdialog.cxx:2793 +msgid "BW factor:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2370 src/dialogs/confdialog.cxx:2794 +msgid "DSP filter BW relative to signal width" +msgstr "" + +#: src/dialogs/confdialog.cxx:2378 src/dialogs/confdialog.cxx:2802 +msgid "Filter ON" +msgstr "" + +#: src/dialogs/confdialog.cxx:2379 src/dialogs/confdialog.cxx:2803 +msgid "Enable DSP filtering" +msgstr "" + +#: src/dialogs/confdialog.cxx:2385 +msgid "FEC" +msgstr "" + +#: src/dialogs/confdialog.cxx:2386 +msgid "Add MultiPSK compatible FEC" +msgstr "" + +#: src/dialogs/confdialog.cxx:2391 src/dialogs/confdialog.cxx:2809 +msgid "Paths" +msgstr "Chemins" + +#: src/dialogs/confdialog.cxx:2401 src/dialogs/confdialog.cxx:2825 +msgid "CWI threshold:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2402 src/dialogs/confdialog.cxx:2826 +msgid "CWI detection and suppression" +msgstr "" + +#: src/dialogs/confdialog.cxx:2411 +msgid "Feld" +msgstr "" + +#: src/dialogs/confdialog.cxx:2415 +msgid "Feld Hell Font:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2423 +msgid "Filter BW" +msgstr "" + +#: src/dialogs/confdialog.cxx:2435 +msgid "2x Xmt Width" +msgstr "" + +#: src/dialogs/confdialog.cxx:2441 +msgid "1/2 x Rcv Width" +msgstr "" + +#: src/dialogs/confdialog.cxx:2446 +msgid "blackboard" +msgstr "" + +#: src/dialogs/confdialog.cxx:2451 +msgid "Pulse Shape" +msgstr "" + +#: src/dialogs/confdialog.cxx:2454 +msgid "Fast Attack (2 msec)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2459 +msgid "Slow Attack (4 msec)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2467 +msgid "Xmt (.) Idle Char" +msgstr "" + +#: src/dialogs/confdialog.cxx:2473 +msgid "Xmt Width" +msgstr "" + +#: src/dialogs/confdialog.cxx:2482 +msgid "MT-63" +msgstr "" + +#: src/dialogs/confdialog.cxx:2487 src/dialogs/confdialog.cxx:2535 +msgid "8 bit extended chars" +msgstr "" + +#: src/dialogs/confdialog.cxx:2492 +msgid "64 bit interleave (long)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2501 +msgid "Olivia" +msgstr "" + +#: src/dialogs/confdialog.cxx:2505 +msgid "Tones" +msgstr "Tons" + +#: src/dialogs/confdialog.cxx:2511 +msgid "Bandwidth" +msgstr "" + +#: src/dialogs/confdialog.cxx:2517 +msgid "RX sync tune margin" +msgstr "" + +#: src/dialogs/confdialog.cxx:2526 +msgid "RX sync integration period" +msgstr "" + +#: src/dialogs/confdialog.cxx:2541 +msgid "Psk" +msgstr "Psk" + +#: src/dialogs/confdialog.cxx:2544 src/dialogs/confdialog.cxx:3424 +msgid "General" +msgstr "Général" + +#: src/dialogs/confdialog.cxx:2546 +msgid "Acq Srch Range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2547 +msgid "Capture signals within this frequency range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2557 +msgid "Acq s/n (db)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2558 +msgid "Capture signals over this threshold" +msgstr "" + +#: src/dialogs/confdialog.cxx:2568 +msgid "S/N, Imd Behavior" +msgstr "" + +#: src/dialogs/confdialog.cxx:2570 +msgid "Dim" +msgstr "" + +#: src/dialogs/confdialog.cxx:2571 +msgid "Check for dimming / uncheck for clear" +msgstr "" + +#: src/dialogs/confdialog.cxx:2576 +msgid "Seconds to " +msgstr "" + +#: src/dialogs/confdialog.cxx:2577 +msgid "Time delay in seconds to dim / clear (0 disables)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2590 +msgid "Mail" +msgstr "" + +#: src/dialogs/confdialog.cxx:2593 +msgid "use sweetspot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2594 +msgid "Return Tx frequency to sweetspot" +msgstr "" + +#: src/dialogs/confdialog.cxx:2600 +msgid "Server Search Range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2601 +msgid "Listen for signals within this range" +msgstr "" + +#: src/dialogs/confdialog.cxx:2613 +msgid "Viewer" +msgstr "Visualiseur" + +#: src/dialogs/confdialog.cxx:2616 +msgid "Marquee style" +msgstr "" + +#: src/dialogs/confdialog.cxx:2617 +msgid "Continuous horizontal scroll of Rx data" +msgstr "" + +#: src/dialogs/confdialog.cxx:2622 +msgid "Show Freq's" +msgstr "" + +#: src/dialogs/confdialog.cxx:2623 +msgid "Show frequencies on left" +msgstr "" + +#: src/dialogs/confdialog.cxx:2628 +msgid "# Channels" +msgstr "# Canaux" + +#: src/dialogs/confdialog.cxx:2629 +msgid "Number of channels to monitor" +msgstr "" + +#: src/dialogs/confdialog.cxx:2638 +msgid "Start Freq" +msgstr "" + +#: src/dialogs/confdialog.cxx:2647 +msgid "Aging (sec)" +msgstr "" + +#: src/dialogs/confdialog.cxx:2648 +msgid "Clear channel after # seconds inactivity" +msgstr "" + +#: src/dialogs/confdialog.cxx:2667 +msgid "Shift" +msgstr "" + +#: src/dialogs/confdialog.cxx:2673 +msgid "Baud" +msgstr "" + +#: src/dialogs/confdialog.cxx:2679 +msgid "Bits" +msgstr "" + +#: src/dialogs/confdialog.cxx:2685 +msgid "Parity" +msgstr "Parité" + +#: src/dialogs/confdialog.cxx:2691 +msgid "Stop" +msgstr "Stop" + +#: src/dialogs/confdialog.cxx:2697 +msgid "PseudoFSK" +msgstr "" + +#: src/dialogs/confdialog.cxx:2703 +msgid "CR-CR-LF" +msgstr "" + +#: src/dialogs/confdialog.cxx:2710 +msgid "AutoCRLF" +msgstr "" + +#: src/dialogs/confdialog.cxx:2716 +msgid "after:" +msgstr "après:" + +#: src/dialogs/confdialog.cxx:2725 +msgid "AFC" +msgstr "" + +#: src/dialogs/confdialog.cxx:2729 +msgid "Slow" +msgstr "Lent" + +#: src/dialogs/confdialog.cxx:2735 +msgid "Normal" +msgstr "Normal" + +#: src/dialogs/confdialog.cxx:2742 +msgid "Fast" +msgstr "Rapide" + +#: src/dialogs/confdialog.cxx:2750 +msgid "X-scope" +msgstr "X-ccope" + +#: src/dialogs/confdialog.cxx:2756 +msgid "X-agc" +msgstr "" + +#: src/dialogs/confdialog.cxx:2763 +msgid "Unshift On Space" +msgstr "" + +#: src/dialogs/confdialog.cxx:2766 +msgid "Rx" +msgstr "Rx" + +#: src/dialogs/confdialog.cxx:2772 +msgid "Tx" +msgstr "Tx" + +#: src/dialogs/confdialog.cxx:2782 +msgid "Thor" +msgstr "Thor" + +#: src/dialogs/confdialog.cxx:2819 +msgid "Soft decode" +msgstr "" + +#: src/dialogs/confdialog.cxx:2820 +msgid "Detector thresholds track s/n" +msgstr "" + +#: src/dialogs/confdialog.cxx:2839 +msgid "Oper" +msgstr "Oper" + +#: src/dialogs/confdialog.cxx:2844 +msgid "Callsign:" +msgstr "Indicatif:" + +#: src/dialogs/confdialog.cxx:2847 +msgid "Name:" +msgstr "Nom:" + +#: src/dialogs/confdialog.cxx:2850 +msgid "Qth:" +msgstr "Qth:" + +#: src/dialogs/confdialog.cxx:2853 +msgid "Locator:" +msgstr "Locator:" + +#: src/dialogs/confdialog.cxx:2856 +msgid "Contest Setup" +msgstr "" + +#: src/dialogs/confdialog.cxx:2859 +msgid "Use Leading Zeros" +msgstr "" + +#: src/dialogs/confdialog.cxx:2864 +msgid "Starting #:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2872 +msgid "# of digits:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2882 +msgid "Antenna:" +msgstr "Antenne:" + +#: src/dialogs/confdialog.cxx:2887 +msgid "Qrz" +msgstr "Qrz" + +#: src/dialogs/confdialog.cxx:2891 +msgid "Not available" +msgstr "Pas dispo" + +#: src/dialogs/confdialog.cxx:2897 +msgid "QRZ cdrom" +msgstr "QRZ cdrom" + +#: src/dialogs/confdialog.cxx:2902 +msgid "QRZ online" +msgstr "QRZ en ligne" + +#: src/dialogs/confdialog.cxx:2903 +msgid "This service may not be available" +msgstr "" + +#: src/dialogs/confdialog.cxx:2908 +msgid "at:" +msgstr "" + +#: src/dialogs/confdialog.cxx:2909 +msgid "" +"ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database" +msgstr "" + +#: src/dialogs/confdialog.cxx:2913 +msgid "Paid Online Subscription" +msgstr "" + +#: src/dialogs/confdialog.cxx:2916 +msgid "User name" +msgstr "Nom utilisateur" + +#: src/dialogs/confdialog.cxx:2917 +msgid "subscription user name" +msgstr "" + +#: src/dialogs/confdialog.cxx:2922 +msgid "Password" +msgstr "Mot de passe" + +#: src/dialogs/confdialog.cxx:2923 +msgid "subscription password" +msgstr "" + +#: src/dialogs/confdialog.cxx:2930 +msgid "You need a paid QRZ on-line subscription for access" +msgstr "" + +#: src/dialogs/confdialog.cxx:2935 +msgid "Hamcall" +msgstr "" + +#: src/dialogs/confdialog.cxx:2936 +msgid "You need a paid Hamcall on-line subscription to access" +msgstr "" + +#: src/dialogs/confdialog.cxx:2941 +msgid "Show" +msgstr "Montre" + +#: src/dialogs/confdialog.cxx:2942 +msgid "Show / Hide user password" +msgstr "" + +#: src/dialogs/confdialog.cxx:2950 +msgid "Rig" +msgstr "" + +#: src/dialogs/confdialog.cxx:2954 +msgid "H/W ptt" +msgstr "H/W ptt" + +#: src/dialogs/confdialog.cxx:2955 +msgid "Tottle DTR for ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:2957 +msgid "none" +msgstr "" + +#: src/dialogs/confdialog.cxx:2964 +msgid "use Serial Port h/w" +msgstr "" + +#: src/dialogs/confdialog.cxx:2965 +msgid "PTT controlled via serial port" +msgstr "" + +#: src/dialogs/confdialog.cxx:2971 +msgid "RTS" +msgstr "RTS" + +#: src/dialogs/confdialog.cxx:2972 +msgid "Toggle RTS for ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:2976 +msgid "DTR" +msgstr "DTR" + +#: src/dialogs/confdialog.cxx:2980 +msgid "RTS = +V" +msgstr "" + +#: src/dialogs/confdialog.cxx:2981 +msgid "initial voltage on RTS" +msgstr "" + +#: src/dialogs/confdialog.cxx:2985 +msgid "DTR = +V" +msgstr "" + +#: src/dialogs/confdialog.cxx:2986 +msgid "Initial voltage on DTR" +msgstr "" + +#: src/dialogs/confdialog.cxx:2991 src/dialogs/confdialog.cxx:3134 +msgid "Select serial port" +msgstr "Sélection port série" + +#: src/dialogs/confdialog.cxx:2999 +msgid "RigCAT" +msgstr "RigCAT" + +#: src/dialogs/confdialog.cxx:3000 +msgid "Rig Control using xml spec file" +msgstr "" + +#: src/dialogs/confdialog.cxx:3002 +msgid "use rigCAT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3003 +msgid "Select rigCAT for rig control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3007 +msgid "command PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3008 src/dialogs/confdialog.cxx:3113 +msgid "use PTT data command" +msgstr "" + +#: src/dialogs/confdialog.cxx:3014 +msgid "Xml File" +msgstr "Fichier Xml" + +#: src/dialogs/confdialog.cxx:3020 +msgid "Select xml file for your rig" +msgstr "" + +#: src/dialogs/confdialog.cxx:3023 +msgid "Port" +msgstr "Port" + +#: src/dialogs/confdialog.cxx:3024 +msgid "Select the serial port" +msgstr "" + +#: src/dialogs/confdialog.cxx:3028 +msgid "Baud Rate" +msgstr "" + +#: src/dialogs/confdialog.cxx:3029 +msgid "Select the baud rate" +msgstr "" + +#: src/dialogs/confdialog.cxx:3035 +msgid "rts PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3036 +msgid "toggle RTS for ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:3041 +msgid "dtr PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3042 +msgid "toggle DTR for ptt" +msgstr "" + +#: src/dialogs/confdialog.cxx:3047 +msgid "set RTS +12 v" +msgstr "" + +#: src/dialogs/confdialog.cxx:3048 src/dialogs/confdialog.cxx:3189 +msgid "initial state of RTS" +msgstr "" + +#: src/dialogs/confdialog.cxx:3053 +msgid "set DTR +12 v" +msgstr "" + +#: src/dialogs/confdialog.cxx:3054 src/dialogs/confdialog.cxx:3183 +msgid "initial state of DTR" +msgstr "" + +#: src/dialogs/confdialog.cxx:3059 src/dialogs/confdialog.cxx:3149 +msgid "Retries" +msgstr "" + +#: src/dialogs/confdialog.cxx:3060 src/dialogs/confdialog.cxx:3150 +msgid "# times to resend command before FAIL" +msgstr "" + +#: src/dialogs/confdialog.cxx:3070 src/dialogs/confdialog.cxx:3160 +msgid "Timeout" +msgstr "" + +#: src/dialogs/confdialog.cxx:3071 src/dialogs/confdialog.cxx:3161 +msgid "milliseconds between retries" +msgstr "" + +#: src/dialogs/confdialog.cxx:3081 src/dialogs/confdialog.cxx:3171 +msgid "Wait" +msgstr "" + +#: src/dialogs/confdialog.cxx:3082 src/dialogs/confdialog.cxx:3172 +msgid "Wait interval (msec) between commands" +msgstr "" + +#: src/dialogs/confdialog.cxx:3093 +msgid "Initialize RigCAT interface" +msgstr "" + +#: src/dialogs/confdialog.cxx:3096 +msgid "RTS/CTS flow ctl." +msgstr "" + +#: src/dialogs/confdialog.cxx:3097 src/dialogs/confdialog.cxx:3194 +msgid "RTS/CTS hardware flow control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3104 +msgid "Hamlib" +msgstr "" + +#: src/dialogs/confdialog.cxx:3106 +msgid "use Hamlib" +msgstr "" + +#: src/dialogs/confdialog.cxx:3107 +msgid "Select hamlib for rig control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3112 +msgid "use Hamlib PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3119 +msgid "Rig:" +msgstr "" + +#: src/dialogs/confdialog.cxx:3120 +msgid "Select hamlib rig" +msgstr "" + +#: src/dialogs/confdialog.cxx:3138 +msgid "Baud Rate:" +msgstr "" + +#: src/dialogs/confdialog.cxx:3139 +msgid "Select baud rate" +msgstr "Sélection baud rate" + +#: src/dialogs/confdialog.cxx:3146 +msgid "Initialize Hamlib rig control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3182 +msgid "DTR +12" +msgstr "" + +#: src/dialogs/confdialog.cxx:3188 +msgid "RTS +12" +msgstr "" + +#: src/dialogs/confdialog.cxx:3193 +msgid "RTS/CTS" +msgstr "" + +#: src/dialogs/confdialog.cxx:3199 +msgid "XON/XOFF" +msgstr "" + +#: src/dialogs/confdialog.cxx:3200 +msgid "XON/XOFF hardware flow control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3206 +msgid "" +"Additional configuration\n" +"of format: param=val ..." +msgstr "" + +#: src/dialogs/confdialog.cxx:3212 +msgid "MemMap" +msgstr "" + +#: src/dialogs/confdialog.cxx:3213 +msgid "use Memmap" +msgstr "" + +#: src/dialogs/confdialog.cxx:3214 +msgid "Select Memory Mapping rig control (Kachina)" +msgstr "" + +#: src/dialogs/confdialog.cxx:3219 +msgid "use Memmap PTT" +msgstr "" + +#: src/dialogs/confdialog.cxx:3237 +msgid "XmlRpc" +msgstr "" + +#: src/dialogs/confdialog.cxx:3239 +msgid "use xmlrpc program" +msgstr "" + +#: src/dialogs/confdialog.cxx:3240 +msgid "experimental" +msgstr "expérimental" + +#: src/dialogs/confdialog.cxx:3260 +msgid "SndCrd" +msgstr "SndCrd" + +#: src/dialogs/confdialog.cxx:3266 +msgid "Audio devices" +msgstr "Périph. Audio" + +#: src/dialogs/confdialog.cxx:3272 +msgid "OSS" +msgstr "" + +#: src/dialogs/confdialog.cxx:3277 src/dialogs/confdialog.cxx:3405 +msgid "Device" +msgstr "Périphérique" + +#: src/dialogs/confdialog.cxx:3285 +msgid "PortAudio" +msgstr "PortAudio" + +#: src/dialogs/confdialog.cxx:3290 src/dialogs/confdialog.cxx:3367 +msgid "Capture" +msgstr "Capture" + +#: src/dialogs/confdialog.cxx:3302 +msgid "PulseAudio" +msgstr "PulseAudio" + +#: src/dialogs/confdialog.cxx:3307 +msgid "Server" +msgstr "Serveur" + +#: src/dialogs/confdialog.cxx:3308 +msgid "" +"Leave this blank or refer to\n" +"http://www.pulseaudio.org/wiki/ServerStrings" +msgstr "" + +#: src/dialogs/confdialog.cxx:3316 +msgid "File I/O only" +msgstr "E/S fichier seulement" + +#: src/dialogs/confdialog.cxx:3325 +msgid "Audio settings" +msgstr "" + +#: src/dialogs/confdialog.cxx:3329 +msgid "RX ppm" +msgstr "" + +#: src/dialogs/confdialog.cxx:3337 +msgid "TX ppm" +msgstr "" + +#: src/dialogs/confdialog.cxx:3345 +msgid "TX offset" +msgstr "" + +#: src/dialogs/confdialog.cxx:3354 +msgid "Sample rate" +msgstr "" + +#: src/dialogs/confdialog.cxx:3358 src/dialogs/confdialog.cxx:3368 +msgid "" +"Force a specific sample rate. Select \"Native\" if \"Auto\" does not work " +"well with your sound hardware." +msgstr "" + +#: src/dialogs/confdialog.cxx:3377 +msgid "Converter" +msgstr "" + +#: src/dialogs/confdialog.cxx:3386 +msgid "Mixer" +msgstr "" + +#: src/dialogs/confdialog.cxx:3389 +msgid "Line In" +msgstr "" + +#: src/dialogs/confdialog.cxx:3393 +msgid "Mic In" +msgstr "" + +#: src/dialogs/confdialog.cxx:3396 +msgid "PCM" +msgstr "" + +#: src/dialogs/confdialog.cxx:3409 +msgid "Manage mixer" +msgstr "" + +#: src/dialogs/confdialog.cxx:3420 +msgid "UI" +msgstr "" + +#: src/dialogs/confdialog.cxx:3427 +msgid "Show Tooltips" +msgstr "" + +#: src/dialogs/confdialog.cxx:3428 +msgid "toggle tooltips on buttons, etc." +msgstr "" + +#: src/dialogs/confdialog.cxx:3434 +msgid "icons on menus" +msgstr "" + +#: src/dialogs/confdialog.cxx:3435 +msgid "toggle menu icons on/off" +msgstr "" + +#: src/dialogs/confdialog.cxx:3440 +msgid "UI scheme" +msgstr "" + +#: src/dialogs/confdialog.cxx:3441 +msgid "change application look and feel" +msgstr "" + +#: src/dialogs/confdialog.cxx:3452 +msgid "QSO logging" +msgstr "" + +#: src/dialogs/confdialog.cxx:3455 +msgid "Nag me" +msgstr "" + +#: src/dialogs/confdialog.cxx:3456 +msgid "exit nag for unsaved log entries" +msgstr "" + +#: src/dialogs/confdialog.cxx:3461 +msgid "Clear on Save" +msgstr "" + +#: src/dialogs/confdialog.cxx:3462 +msgid "Clear log entries after saving or using macro " +msgstr "" + +#: src/dialogs/confdialog.cxx:3471 +msgid "Restart" +msgstr "" + +#: src/dialogs/confdialog.cxx:3473 +msgid "These changes take effect on next program startup" +msgstr "" + +#: src/dialogs/confdialog.cxx:3476 +msgid "Waterfall width in Hz" +msgstr "Largeur Chute d'eau en Hz" + +#: src/dialogs/confdialog.cxx:3477 +msgid "Wider ==> higher cpu usage" +msgstr "" + +#: src/dialogs/confdialog.cxx:3487 +msgid "Waterfall height in pixels" +msgstr "" + +#: src/dialogs/confdialog.cxx:3488 +msgid "Taller ==> higher cpu usage" +msgstr "" + +#: src/dialogs/confdialog.cxx:3498 +msgid "Docked scope" +msgstr "" + +#: src/dialogs/confdialog.cxx:3499 +msgid "Attach digiscope to right of waterfall" +msgstr "" + +#: src/dialogs/confdialog.cxx:3504 +msgid "Docked Rig Control" +msgstr "" + +#: src/dialogs/confdialog.cxx:3505 +msgid "Attach rig control to left of logbook" +msgstr "" + +#: src/dialogs/confdialog.cxx:3511 +msgid "Check button toggle for Sql && AFC" +msgstr "" + +#: src/dialogs/confdialog.cxx:3524 +msgid "Wfall" +msgstr "Wfall" + +#: src/dialogs/confdialog.cxx:3530 +msgid "Filters/Colors" +msgstr "" + +#: src/dialogs/confdialog.cxx:3533 +msgid "Palette:" +msgstr "" + +#: src/dialogs/confdialog.cxx:3581 +msgid "Low Freq Cutoff" +msgstr "" + +#: src/dialogs/confdialog.cxx:3591 +msgid "wf averaging" +msgstr "" + +#: src/dialogs/confdialog.cxx:3598 +msgid "Waterfall Font" +msgstr "Police Chute d'eau" + +#: src/dialogs/confdialog.cxx:3605 +msgid "FFT Processing" +msgstr "" + +#: src/dialogs/confdialog.cxx:3607 +msgid "FFT Prefilter" +msgstr "" + +#: src/dialogs/confdialog.cxx:3611 +msgid "Blackman" +msgstr "" + +#: src/dialogs/confdialog.cxx:3616 +msgid "Hamming" +msgstr "" + +#: src/dialogs/confdialog.cxx:3621 +msgid "Hanning" +msgstr "" + +#: src/dialogs/confdialog.cxx:3626 +msgid "Triangular" +msgstr "" + +#: src/dialogs/confdialog.cxx:3633 +msgid "FFT Latency" +msgstr "" + +#: src/dialogs/confdialog.cxx:3636 +msgid "Scan merging:" +msgstr "" + +#: src/dialogs/confdialog.cxx:3637 +msgid "1 = none" +msgstr "" + +#: src/dialogs/confdialog.cxx:3655 +msgid "Cursor BW" +msgstr "" + +#: src/dialogs/confdialog.cxx:3660 +msgid "BW Tracks" +msgstr "" + +#: src/dialogs/confdialog.cxx:3665 +msgid "Cursor Center" +msgstr "" + +#: src/dialogs/confdialog.cxx:3671 +msgid "Select Cursor BW color" +msgstr "" + +#: src/dialogs/confdialog.cxx:3677 +msgid "Select Center Line color" +msgstr "" + +#: src/dialogs/confdialog.cxx:3683 +msgid "Select BW tracks color" +msgstr "" + +#: src/dialogs/confdialog.cxx:3688 +msgid "show Audio Scale" +msgstr "" + +#: src/dialogs/confdialog.cxx:3693 +msgid "View Tx Signal" +msgstr "" + +#: src/dialogs/confdialog.cxx:3698 +msgid "Tx Audio Monitor Level" +msgstr "" + +#: src/dialogs/confdialog.cxx:3713 +msgid "Mouse" +msgstr "Souris" + +#: src/dialogs/confdialog.cxx:3717 +msgid "Left/Right click always replays history" +msgstr "" + +#: src/dialogs/confdialog.cxx:3718 +msgid "Disabled - Ctrl-Lft click plays history" +msgstr "" + +#: src/dialogs/confdialog.cxx:3723 +msgid "Dragging changes frequency" +msgstr "" + +#: src/dialogs/confdialog.cxx:3724 +msgid "Drag mouse on waterfall scale to change frequency" +msgstr "" + +#: src/dialogs/confdialog.cxx:3733 +msgid "Insert text on left click" +msgstr "" + +#: src/dialogs/confdialog.cxx:3734 +msgid "Default - double click on waterfall inserts text" +msgstr "" + +#: src/dialogs/confdialog.cxx:3741 +msgid "Wheel action" +msgstr "" + +#: src/dialogs/confdialog.cxx:3742 +msgid "Select how Mouse wheel behaves on waterfall" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:70 +msgid "Rig Controller" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:73 +msgid "9" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:87 +msgid "" +"Select operating mode and frequency\n" +"Middle click to replace, Shift-left click to delete" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:122 +msgid "@|>" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:123 +msgid "Add to list" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:127 +msgid "@-11+" +msgstr "" + +#: src/rigcontrol/rigdialog.cxx:132 +msgid "@-1square" +msgstr "" diff --git a/po/insert-header.sin b/po/insert-header.sin new file mode 100644 index 00000000..b26de01f --- /dev/null +++ b/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/quot.sed b/po/quot.sed new file mode 100644 index 00000000..0122c463 --- /dev/null +++ b/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin new file mode 100644 index 00000000..2436c49e --- /dev/null +++ b/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/scripts/mkversions.sh b/scripts/mkversions.sh index 3413f16e..7d82f12c 100755 --- a/scripts/mkversions.sh +++ b/scripts/mkversions.sh @@ -13,7 +13,7 @@ COMPILE_DATE=`date` COMPILE_USER=`whoami` COMPILE_HOST=`hostname` COMPILER=`$CXX -v 2>&1 | tail -n 1 | tr -d \'\"` -CFLAGS="$AM_CPPFLAGS $AM_CXXFLAGS $CXXFLAGS" +CFLAGS=`echo "$AM_CPPFLAGS $AM_CXXFLAGS $CXXFLAGS" | sed -e 's!"!\\\\"!g'` LDFLAGS="$LDADD" sed -e "s!%%COMMENT%%!${COMMENT}!g; s!%%COMPILE_CFG%%!${COMPILE_CFG}!g;\ diff --git a/src/Makefile.am b/src/Makefile.am index aa5e3045..38fd143b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -4,18 +4,20 @@ bin_PROGRAMS = fldigi -AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include -I$(srcdir)/irrxml -I$(srcdir)/fileselector @BOOST_CPPFLAGS@ +AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" -I$(srcdir) -I$(srcdir)/include \ + -I$(srcdir)/irrxml -I$(srcdir)/fileselector @BOOST_CPPFLAGS@ AM_CXXFLAGS = @PORTAUDIO_CFLAGS@ @FLTK_CFLAGS@ @SNDFILE_CFLAGS@ \ @SAMPLERATE_CFLAGS@ @PULSEAUDIO_CFLAGS@ @HAMLIB_CFLAGS@ \ - @IMAGE_CFLAGS@ @XMLRPC_CFLAGS@ @MAC_UNIVERSAL_CFLAGS@ \ + @IMAGE_CFLAGS@ @XMLRPC_CFLAGS@ @MAC_UNIVERSAL_CFLAGS@ @INTL_CFLAGS@ \ -pipe -Wall -fexceptions @OPT_CFLAGS@ @DEBUG_CFLAGS@ AM_CFLAGS = $(AM_CXXFLAGS) AM_LDFLAGS = @MAC_UNIVERSAL_LDFLAGS@ LDADD = @PORTAUDIO_LIBS@ @BOOST_LDFLAGS@ @FLTK_LIBS@ @SNDFILE_LIBS@ \ - @SAMPLERATE_LIBS@ @PULSEAUDIO_LIBS@ @HAMLIB_LIBS@ @IMAGE_LIBS@ @XMLRPC_LIBS@ @EXTRA_LIBS@ + @SAMPLERATE_LIBS@ @PULSEAUDIO_LIBS@ @HAMLIB_LIBS@ @IMAGE_LIBS@ \ + @XMLRPC_LIBS@ @INTL_LIBS@ @EXTRA_LIBS@ HAMLIB_SRC = include/hamlib.h rigcontrol/hamlib.cxx include/rigclass.h rigcontrol/rigclass.cxx @@ -173,6 +175,7 @@ fldigi_SOURCES += \ include/flstring.h \ include/font_browser.h \ include/fontdef.h \ + include/gettext.h \ include/globals.h \ include/icons.h \ include/id.h \ @@ -320,7 +323,7 @@ fldigi_SOURCES += \ widgets/picture.cxx \ widgets/progress.cxx \ wwv/analysis.cxx \ - wwv/wwv.cxx + wwv/wwv.cxx # Sources that are part of the distribution but are not compiled directly EXTRA_fldigi_SOURCES += \ @@ -357,7 +360,7 @@ EXTRA_fldigi_SOURCES += \ mt63/mt63intl.dat \ trx/tune.cxx \ rsid/rsid_fft.cxx \ - rsid/rsid_fft.h + rsid/rsid_fft.h # Additional non-source files that we distribute EXTRA_DIST = \ diff --git a/src/dialogs/Viewer.cxx b/src/dialogs/Viewer.cxx index ad16ad1c..7dad7b65 100644 --- a/src/dialogs/Viewer.cxx +++ b/src/dialogs/Viewer.cxx @@ -10,6 +10,7 @@ #include "waterfall.h" #include "fl_digi.h" #include "re.h" +#include "gettext.h" #include "spot.h" #include @@ -276,13 +277,13 @@ Fl_Double_Window* createViewer() { static int viewerwidth = (progStatus.VIEWERnchars * cwidth) + cols[0] + sbarwidth + border; static int viewerheight = 50 + cheight * progdefaults.VIEWERchannels + border; - w = new Fl_Double_Window(progStatus.VIEWERxpos, progStatus.VIEWERypos, viewerwidth, viewerheight, "Psk Viewer"); + w = new Fl_Double_Window(progStatus.VIEWERxpos, progStatus.VIEWERypos, viewerwidth, viewerheight, _("Psk Viewer")); w->xclass(PACKAGE_NAME); p = new Fl_Pack(0,0,viewerwidth, viewerheight); Fl_Pack *p1 = new Fl_Pack(0, 0, viewerwidth, 25); p1->type(1); Fl_Box *bx = new Fl_Box(0,0,50, 25); - inpSeek = new Fl_Input(50, 5, 200, 25, "Find: "); + inpSeek = new Fl_Input(50, 5, 200, 25, _("Find: ")); inpSeek->callback((Fl_Callback*)cb_Seek); inpSeek->when(FL_WHEN_CHANGED); inpSeek->textfont(FL_SCREEN); @@ -300,15 +301,15 @@ Fl_Double_Window* createViewer() { Fl_Pack *p2 = new Fl_Pack(0, viewerheight - 25, viewerwidth, 25); p2->type(1); bx = new Fl_Box(0,viewerheight - 25, 10, 25); - btnClearViewer = new Fl_Button(10, viewerheight - 25, 65, 25, "Clear"); + btnClearViewer = new Fl_Button(10, viewerheight - 25, 65, 25, _("Clear")); btnClearViewer->callback((Fl_Callback*)cb_btnClearViewer); - btnClearViewer->tooltip("Left click to clear text\nRight click to reset frequencies"); + btnClearViewer->tooltip(_("Left click to clear text\nRight click to reset frequencies")); bx = new Fl_Box(75, viewerheight - 25, 10, 25); - btnCloseViewer = new Fl_Button(85, viewerheight - 25, 65, 25, "Close"); + btnCloseViewer = new Fl_Button(85, viewerheight - 25, 65, 25, _("Close")); btnCloseViewer->callback((Fl_Callback*)cb_btnCloseViewer); bx = new Fl_Box(140, viewerheight - 25, 5, 25); sldrViewerSquelch = new Fl_Slider(145, viewerheight - 25, 200, 25); - sldrViewerSquelch->tooltip("Set Viewer Squelch"); + sldrViewerSquelch->tooltip(_("Set Viewer Squelch")); sldrViewerSquelch->type(FL_HOR_NICE_SLIDER); sldrViewerSquelch->range(0.0, 100.0); sldrViewerSquelch->value(progdefaults.VIEWERsquelch); diff --git a/src/dialogs/colorsfonts.cxx b/src/dialogs/colorsfonts.cxx index 416573fc..f84a2812 100644 --- a/src/dialogs/colorsfonts.cxx +++ b/src/dialogs/colorsfonts.cxx @@ -1,5 +1,6 @@ -// generated by Fast Light User Interface Designer (fluid) version 1.0108 +// generated by Fast Light User Interface Designer (fluid) version 1.0109 +#include "gettext.h" #include "colorsfonts.h" #include #include "fl_digi.h" @@ -605,13 +606,13 @@ static void cb_btnTextDefaults(Fl_Button*, void*) { } Fl_Double_Window* make_colorsfonts() { - { dlgColorFont = new Fl_Double_Window(375, 220, "Colors and Fonts"); - { btnClrFntClose = new Fl_Button(296, 190, 75, 25, "Close"); + { dlgColorFont = new Fl_Double_Window(375, 220, _("Colors and Fonts")); + { btnClrFntClose = new Fl_Button(296, 190, 75, 25, _("Close")); btnClrFntClose->callback((Fl_Callback*)cb_btnClrFntClose); } // Fl_Button* btnClrFntClose { Fl_Tabs* o = new Fl_Tabs(0, 5, 375, 179); - { Fl_Group* o = new Fl_Group(5, 30, 365, 150, "Freq Display"); - { Fl_Box* o = FDdisplay = new Fl_Box(100, 45, 45, 67, "8"); + { Fl_Group* o = new Fl_Group(5, 30, 365, 150, _("Freq Display")); + { Fl_Box* o = FDdisplay = new Fl_Box(100, 45, 45, 67, _("8")); FDdisplay->box(FL_DOWN_BOX); FDdisplay->color((Fl_Color)55); FDdisplay->labelfont(4); @@ -619,53 +620,53 @@ Fl_Double_Window* make_colorsfonts() { o->color(fl_rgb_color(progdefaults.FDbackground.R,progdefaults.FDbackground.G,progdefaults.FDbackground.B)); o->labelcolor(fl_rgb_color(progdefaults.FDforeground.R,progdefaults.FDforeground.G,progdefaults.FDforeground.B)); } // Fl_Box* FDdisplay - { btnBackgroundColor = new Fl_Button(165, 45, 100, 30, "Background"); + { btnBackgroundColor = new Fl_Button(165, 45, 100, 30, _("Background")); btnBackgroundColor->callback((Fl_Callback*)cb_btnBackgroundColor); } // Fl_Button* btnBackgroundColor - { btnForegroundColor = new Fl_Button(165, 85, 100, 30, "Foreground"); + { btnForegroundColor = new Fl_Button(165, 85, 100, 30, _("Foreground")); btnForegroundColor->callback((Fl_Callback*)cb_btnForegroundColor); } // Fl_Button* btnForegroundColor - { btnFD_SystemColor = new Fl_Button(165, 125, 100, 30, "System"); + { btnFD_SystemColor = new Fl_Button(165, 125, 100, 30, _("System")); btnFD_SystemColor->callback((Fl_Callback*)cb_btnFD_SystemColor); } // Fl_Button* btnFD_SystemColor o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(5, 30, 365, 150, "Func keys"); + { Fl_Group* o = new Fl_Group(5, 30, 365, 150, _("Func keys")); o->hide(); - { btnUseGroupColors = new Fl_Check_Button(10, 40, 165, 20, "Use colored buttons"); + { btnUseGroupColors = new Fl_Check_Button(10, 40, 165, 20, _("Use colored buttons")); btnUseGroupColors->down_box(FL_DOWN_BOX); btnUseGroupColors->callback((Fl_Callback*)cb_btnUseGroupColors); btnUseGroupColors->value(progdefaults.useGroupColors); } // Fl_Check_Button* btnUseGroupColors - { btnGroup1 = new Fl_Button(10, 70, 75, 20, "Group 1"); - btnGroup1->tooltip("Background color for Function key group 1"); + { btnGroup1 = new Fl_Button(10, 70, 75, 20, _("Group 1")); + btnGroup1->tooltip(_("Background color for Function key group 1")); btnGroup1->callback((Fl_Callback*)cb_btnGroup1); btnGroup1->color(fl_rgb_color(progdefaults.btnGroup1.R, progdefaults.btnGroup1.G,progdefaults.btnGroup1.B)); btnGroup1->labelcolor(fl_rgb_color(progdefaults.btnFkeyTextColor.R, progdefaults.btnFkeyTextColor.R, progdefaults.btnFkeyTextColor.R)); } // Fl_Button* btnGroup1 - { btnGroup2 = new Fl_Button(101, 70, 75, 20, "Group 2"); - btnGroup2->tooltip("Background color for Function key group 2"); + { btnGroup2 = new Fl_Button(101, 70, 75, 20, _("Group 2")); + btnGroup2->tooltip(_("Background color for Function key group 2")); btnGroup2->callback((Fl_Callback*)cb_btnGroup2); btnGroup2->color(fl_rgb_color(progdefaults.btnGroup2.R, progdefaults.btnGroup2.G,progdefaults.btnGroup2.B)); btnGroup2->labelcolor(fl_rgb_color(progdefaults.btnFkeyTextColor.R, progdefaults.btnFkeyTextColor.R, progdefaults.btnFkeyTextColor.R)); } // Fl_Button* btnGroup2 - { btnGroup3 = new Fl_Button(193, 70, 75, 20, "Group 3"); - btnGroup3->tooltip("Background color for Function key group 3"); + { btnGroup3 = new Fl_Button(193, 70, 75, 20, _("Group 3")); + btnGroup3->tooltip(_("Background color for Function key group 3")); btnGroup3->callback((Fl_Callback*)cb_btnGroup3); btnGroup3->color(fl_rgb_color(progdefaults.btnGroup3.R, progdefaults.btnGroup3.G,progdefaults.btnGroup3.B)); btnGroup3->labelcolor(fl_rgb_color(progdefaults.btnFkeyTextColor.R, progdefaults.btnFkeyTextColor.R, progdefaults.btnFkeyTextColor.R)); } // Fl_Button* btnGroup3 - { btnFkeyTextColor = new Fl_Button(193, 40, 75, 20, "Label text"); + { btnFkeyTextColor = new Fl_Button(193, 40, 75, 20, _("Label text")); btnFkeyTextColor->callback((Fl_Callback*)cb_btnFkeyTextColor); btnFkeyTextColor->color(fl_rgb_color(progdefaults.btnFkeyTextColor.R, progdefaults.btnFkeyTextColor.G, progdefaults.btnFkeyTextColor.B)); adjust_label(btnFkeyTextColor); } // Fl_Button* btnFkeyTextColor - { btnFkeyDEfaults = new Fl_Button(285, 70, 75, 20, "Defaults"); + { btnFkeyDEfaults = new Fl_Button(285, 70, 75, 20, _("Defaults")); btnFkeyDEfaults->callback((Fl_Callback*)cb_btnFkeyDEfaults); } // Fl_Button* btnFkeyDEfaults o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(5, 30, 365, 150, "Text Ctrls"); + { Fl_Group* o = new Fl_Group(5, 30, 365, 150, _("Text Ctrls")); o->hide(); { RxText = new Fl_Input(15, 43, 165, 35); RxText->value("Receive Text"); @@ -673,10 +674,10 @@ Fl_Double_Window* make_colorsfonts() { RxText->textfont(progdefaults.RxFontnbr); RxText->textsize(progdefaults.RxFontsize); RxText->textcolor(progdefaults.RxFontcolor); RxText->type(FL_MULTILINE_INPUT_WRAP); } // Fl_Input* RxText - { btnRxColor = new Fl_Button(190, 50, 75, 20, "Rx bkgnd"); + { btnRxColor = new Fl_Button(190, 50, 75, 20, _("Rx bkgnd")); btnRxColor->callback((Fl_Callback*)cb_btnRxColor); } // Fl_Button* btnRxColor - { btnTxColor = new Fl_Button(190, 90, 75, 20, "Tx bkgnd"); + { btnTxColor = new Fl_Button(190, 90, 75, 20, _("Tx bkgnd")); btnTxColor->callback((Fl_Callback*)cb_btnTxColor); } // Fl_Button* btnTxColor { TxText = new Fl_Input(15, 85, 165, 35); @@ -685,40 +686,40 @@ Fl_Double_Window* make_colorsfonts() { TxText->textfont(progdefaults.TxFontnbr); TxText->textsize(progdefaults.TxFontsize); TxText->textcolor(progdefaults.TxFontcolor); TxText->type(FL_MULTILINE_INPUT_WRAP); } // Fl_Input* TxText - { btnRxFont = new Fl_Button(275, 50, 75, 20, "Rx font"); + { btnRxFont = new Fl_Button(275, 50, 75, 20, _("Rx font")); btnRxFont->callback((Fl_Callback*)cb_btnRxFont); } // Fl_Button* btnRxFont - { btnTxFont = new Fl_Button(275, 90, 75, 20, "Tx font"); + { btnTxFont = new Fl_Button(275, 90, 75, 20, _("Tx font")); btnTxFont->callback((Fl_Callback*)cb_btnTxFont); } // Fl_Button* btnTxFont - { btnXMIT = new Fl_Button(15, 130, 40, 20, "XMIT"); - btnXMIT->tooltip("Sent chars in Rx/Tx pane"); + { btnXMIT = new Fl_Button(15, 130, 40, 20, _("XMIT")); + btnXMIT->tooltip(_("Sent chars in Rx/Tx pane")); btnXMIT->callback((Fl_Callback*)cb_btnXMIT); btnXMIT->align(FL_ALIGN_BOTTOM); btnXMIT->color(progdefaults.XMITcolor); } // Fl_Button* btnXMIT - { btnCTRL = new Fl_Button(66, 130, 40, 20, "CTRL"); - btnCTRL->tooltip("Control chars in Rx/Tx pane"); + { btnCTRL = new Fl_Button(66, 130, 40, 20, _("CTRL")); + btnCTRL->tooltip(_("Control chars in Rx/Tx pane")); btnCTRL->callback((Fl_Callback*)cb_btnCTRL); btnCTRL->align(FL_ALIGN_BOTTOM); btnCTRL->color(progdefaults.CTRLcolor); } // Fl_Button* btnCTRL - { btnSKIP = new Fl_Button(118, 130, 40, 20, "SKIP"); - btnSKIP->tooltip("Skipped chars in Tx pane\n(Tx on/off in CW)"); + { btnSKIP = new Fl_Button(118, 130, 40, 20, _("SKIP")); + btnSKIP->tooltip(_("Skipped chars in Tx pane\n(Tx on/off in CW)")); btnSKIP->callback((Fl_Callback*)cb_btnSKIP); btnSKIP->align(FL_ALIGN_BOTTOM); btnSKIP->color(progdefaults.SKIPcolor); } // Fl_Button* btnSKIP - { btnALTR = new Fl_Button(170, 130, 40, 20, "ALTR"); - btnALTR->tooltip("Quick view chars in Rx pane"); + { btnALTR = new Fl_Button(170, 130, 40, 20, _("ALTR")); + btnALTR->tooltip(_("Quick view chars in Rx pane")); btnALTR->callback((Fl_Callback*)cb_btnALTR); btnALTR->align(FL_ALIGN_BOTTOM); btnALTR->color(progdefaults.ALTRcolor); } // Fl_Button* btnALTR - { btnNoTextColor = new Fl_Button(219, 130, 70, 20, "System"); + { btnNoTextColor = new Fl_Button(219, 130, 70, 20, _("System")); btnNoTextColor->callback((Fl_Callback*)cb_btnNoTextColor); } // Fl_Button* btnNoTextColor - { btnTextDefaults = new Fl_Button(296, 130, 70, 20, "Defaults"); + { btnTextDefaults = new Fl_Button(296, 130, 70, 20, _("Defaults")); btnTextDefaults->callback((Fl_Callback*)cb_btnTextDefaults); } // Fl_Button* btnTextDefaults o->end(); diff --git a/src/dialogs/colorsfonts.fl b/src/dialogs/colorsfonts.fl index a4bfdc47..3e136185 100644 --- a/src/dialogs/colorsfonts.fl +++ b/src/dialogs/colorsfonts.fl @@ -1,6 +1,9 @@ # data file for the Fltk User Interface Designer (fluid) version 1.0108 -header_name {} +i18n_type 1 +i18n_include "gettext.h" +i18n_function _ +header_name {.h} code_name {.cxx} decl {\#include } {global } diff --git a/src/dialogs/confdialog.cxx b/src/dialogs/confdialog.cxx index d5309136..052140a3 100644 --- a/src/dialogs/confdialog.cxx +++ b/src/dialogs/confdialog.cxx @@ -1,5 +1,6 @@ -// generated by Fast Light User Interface Designer (fluid) version 1.0108 +// generated by Fast Light User Interface Designer (fluid) version 1.0109 +#include "gettext.h" #include "confdialog.h" #include #include @@ -1951,9 +1952,9 @@ static const char szStopBits[] = "1|1.5|2"; static const char szOliviaTones[] = "2|4|8|16|32|64|128|256"; static const char szOliviaBandwidth[] = "125|250|500|1000|2000"; static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600|115200|230400|460800"; - { Fl_Double_Window* o = new Fl_Double_Window(400, 255, "fldigi - config"); + { Fl_Double_Window* o = new Fl_Double_Window(400, 255, _("fldigi - config")); w = o; - o->tooltip("Leading/Trailing Risetimes (msec)"); + o->tooltip(_("Leading/Trailing Risetimes (msec)")); o->color(FL_DARK2); o->selection_color((Fl_Color)51); o->labelsize(18); @@ -1961,30 +1962,30 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 { tabsConfigure = new Fl_Tabs(0, 0, 405, 225); tabsConfigure->color(FL_DARK1); tabsConfigure->selection_color((Fl_Color)9); - { tabID = new Fl_Group(0, 25, 400, 195, "Id\'s"); + { tabID = new Fl_Group(0, 25, 400, 195, _("Id\'s")); tabID->color((Fl_Color)51); tabID->selection_color((Fl_Color)51); tabID->hide(); - { Fl_Group* o = new Fl_Group(5, 40, 390, 77, "Video Preamble ID"); + { Fl_Group* o = new Fl_Group(5, 40, 390, 77, _("Video Preamble ID")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { btnsendid = new Fl_Check_Button(11, 57, 115, 20, "Xmt Mode ID"); + { btnsendid = new Fl_Check_Button(11, 57, 115, 20, _("Xmt Mode ID")); btnsendid->down_box(FL_DOWN_BOX); btnsendid->callback((Fl_Callback*)cb_btnsendid); } // Fl_Check_Button* btnsendid - { Fl_Check_Button* o = btnsendvideotext = new Fl_Check_Button(11, 89, 130, 20, "Xmt Video Text"); + { Fl_Check_Button* o = btnsendvideotext = new Fl_Check_Button(11, 89, 130, 20, _("Xmt Video Text")); btnsendvideotext->down_box(FL_DOWN_BOX); btnsendvideotext->callback((Fl_Callback*)cb_btnsendvideotext); o->value(progdefaults.sendtextid); } // Fl_Check_Button* btnsendvideotext - { Fl_Input* o = valVideotext = new Fl_Input(159, 89, 120, 20, "Video Text:"); - valVideotext->tooltip("Limit to a few characters as in CQEM or IOTA etc."); + { Fl_Input* o = valVideotext = new Fl_Input(159, 89, 120, 20, _("Video Text:")); + valVideotext->tooltip(_("Limit to a few characters as in CQEM or IOTA etc.")); valVideotext->callback((Fl_Callback*)cb_valVideotext); valVideotext->align(FL_ALIGN_TOP_LEFT); o->value(progdefaults.strTextid.c_str()); } // Fl_Input* valVideotext - { Fl_Value_Slider* o = sldrVideowidth = new Fl_Value_Slider(290, 89, 95, 20, "Video Width:"); - sldrVideowidth->tooltip("Set the # of chars per row"); + { Fl_Value_Slider* o = sldrVideowidth = new Fl_Value_Slider(290, 89, 95, 20, _("Video Width:")); + sldrVideowidth->tooltip(_("Set the # of chars per row")); sldrVideowidth->type(1); sldrVideowidth->color((Fl_Color)26); sldrVideowidth->minimum(1); @@ -1997,7 +1998,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->value(progdefaults.videowidth); if (progdefaults.ID_SMALL) o->deactivate(); } // Fl_Value_Slider* sldrVideowidth - { Fl_Check_Button* o = chkID_SMALL = new Fl_Check_Button(290, 49, 100, 20, "small font"); + { Fl_Check_Button* o = chkID_SMALL = new Fl_Check_Button(290, 49, 100, 20, _("small font")); chkID_SMALL->down_box(FL_DOWN_BOX); chkID_SMALL->value(1); chkID_SMALL->callback((Fl_Callback*)cb_chkID_SMALL); @@ -2005,17 +2006,17 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Check_Button* chkID_SMALL o->end(); } // Fl_Group* o - { sld = new Fl_Group(5, 117, 390, 54, "CW Postamble ID"); + { sld = new Fl_Group(5, 117, 390, 54, _("CW Postamble ID")); sld->box(FL_ENGRAVED_FRAME); sld->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = btnCWID = new Fl_Check_Button(13, 142, 98, 15, "Xmt CWID"); - btnCWID->tooltip("send CW callsign at end of transmission"); + { Fl_Check_Button* o = btnCWID = new Fl_Check_Button(13, 142, 98, 15, _("Xmt CWID")); + btnCWID->tooltip(_("send CW callsign at end of transmission")); btnCWID->down_box(FL_DOWN_BOX); btnCWID->callback((Fl_Callback*)cb_btnCWID); o->value(progdefaults.CWid); } // Fl_Check_Button* btnCWID - { Fl_Value_Slider* o = sldrCWIDwpm = new Fl_Value_Slider(150, 139, 233, 20, "CWID wpm:"); - sldrCWIDwpm->tooltip("speed in WPM"); + { Fl_Value_Slider* o = sldrCWIDwpm = new Fl_Value_Slider(150, 139, 233, 20, _("CWID wpm:")); + sldrCWIDwpm->tooltip(_("speed in WPM")); sldrCWIDwpm->type(1); sldrCWIDwpm->color((Fl_Color)26); sldrCWIDwpm->minimum(15); @@ -2029,17 +2030,17 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Value_Slider* sldrCWIDwpm sld->end(); } // Fl_Group* sld - { Fl_Group* o = new Fl_Group(5, 170, 390, 45, "Reed Solomon ID"); + { Fl_Group* o = new Fl_Group(5, 170, 390, 45, _("Reed Solomon ID")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = chkTransmitRSid = new Fl_Check_Button(70, 190, 119, 20, "Transmit RSid"); - chkTransmitRSid->tooltip("Transmit Reed Solomon ID"); + { Fl_Check_Button* o = chkTransmitRSid = new Fl_Check_Button(70, 190, 119, 20, _("Transmit RSid")); + chkTransmitRSid->tooltip(_("Transmit Reed Solomon ID")); chkTransmitRSid->down_box(FL_DOWN_BOX); chkTransmitRSid->callback((Fl_Callback*)cb_chkTransmitRSid); o->value(progdefaults.TransmitRSid); } // Fl_Check_Button* chkTransmitRSid - { Fl_Check_Button* o = chkRSidWideSearch = new Fl_Check_Button(209, 192, 85, 15, "Wide Search Detector"); - chkRSidWideSearch->tooltip("Search over entire waterfall"); + { Fl_Check_Button* o = chkRSidWideSearch = new Fl_Check_Button(209, 192, 85, 15, _("Wide Search Detector")); + chkRSidWideSearch->tooltip(_("Search over entire waterfall")); chkRSidWideSearch->down_box(FL_DOWN_BOX); chkRSidWideSearch->callback((Fl_Callback*)cb_chkRSidWideSearch); o->value(progdefaults.rsidWideSearch); @@ -2048,19 +2049,19 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o tabID->end(); } // Fl_Group* tabID - { tabMisc = new Fl_Group(0, 25, 405, 200, "Misc"); + { tabMisc = new Fl_Group(0, 25, 405, 200, _("Misc")); tabMisc->color((Fl_Color)51); tabMisc->selection_color((Fl_Color)51); tabMisc->hide(); { tabsMisc = new Fl_Tabs(0, 25, 405, 200); tabsMisc->selection_color((Fl_Color)10); - { tabCPUspeed = new Fl_Group(0, 50, 400, 170, "CPU"); + { tabCPUspeed = new Fl_Group(0, 50, 400, 170, _("CPU")); tabCPUspeed->hide(); { Fl_Group* o = new Fl_Group(5, 62, 390, 43); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = chkSlowCpu = new Fl_Check_Button(110, 72, 89, 20, "Slow cpu"); - chkSlowCpu->tooltip("select for CPU < 700 MHz"); + { Fl_Check_Button* o = chkSlowCpu = new Fl_Check_Button(110, 72, 89, 20, _("Slow cpu")); + chkSlowCpu->tooltip(_("select for CPU < 700 MHz")); chkSlowCpu->down_box(FL_DOWN_BOX); chkSlowCpu->callback((Fl_Callback*)cb_chkSlowCpu); o->value(progdefaults.slowcpu); @@ -2069,17 +2070,17 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o tabCPUspeed->end(); } // Fl_Group* tabCPUspeed - { tabMacros = new Fl_Group(0, 50, 400, 170, "Macros"); + { tabMacros = new Fl_Group(0, 50, 400, 170, _("Macros")); tabMacros->hide(); { Fl_Group* o = new Fl_Group(5, 55, 390, 69); o->box(FL_ENGRAVED_FRAME); - { Fl_Check_Button* o = btnUseLastMacro = new Fl_Check_Button(30, 70, 274, 15, "load last used Macro file on startup"); + { Fl_Check_Button* o = btnUseLastMacro = new Fl_Check_Button(30, 70, 274, 15, _("load last used Macro file on startup")); btnUseLastMacro->down_box(FL_DOWN_BOX); btnUseLastMacro->callback((Fl_Callback*)cb_btnUseLastMacro); o->value(progdefaults.UseLastMacro); } // Fl_Check_Button* btnUseLastMacro - { Fl_Check_Button* o = btnDisplayMacroFilename = new Fl_Check_Button(30, 91, 274, 15, "display Macro Filename on startup"); - btnDisplayMacroFilename->tooltip("filename is written to the Rx text area"); + { Fl_Check_Button* o = btnDisplayMacroFilename = new Fl_Check_Button(30, 91, 274, 15, _("display Macro Filename on startup")); + btnDisplayMacroFilename->tooltip(_("filename is written to the Rx text area")); btnDisplayMacroFilename->down_box(FL_DOWN_BOX); btnDisplayMacroFilename->callback((Fl_Callback*)cb_btnDisplayMacroFilename); o->value(progdefaults.DisplayMacroFilename); @@ -2088,12 +2089,12 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o tabMacros->end(); } // Fl_Group* tabMacros - { tabSweetSpot = new Fl_Group(0, 50, 400, 170, "Sweet Spot"); + { tabSweetSpot = new Fl_Group(0, 50, 400, 170, _("Sweet Spot")); tabSweetSpot->hide(); { Fl_Group* o = new Fl_Group(5, 60, 390, 75); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Value_Input* o = valCWsweetspot = new Fl_Value_Input(50, 71, 65, 20, "CW"); + { Fl_Value_Input* o = valCWsweetspot = new Fl_Value_Input(50, 71, 65, 20, _("CW")); valCWsweetspot->minimum(200); valCWsweetspot->maximum(4000); valCWsweetspot->step(1); @@ -2101,7 +2102,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 valCWsweetspot->callback((Fl_Callback*)cb_valCWsweetspot); o->value(progdefaults.CWsweetspot); } // Fl_Value_Input* valCWsweetspot - { Fl_Value_Input* o = valRTTYsweetspot = new Fl_Value_Input(182, 71, 65, 20, "RTTY"); + { Fl_Value_Input* o = valRTTYsweetspot = new Fl_Value_Input(182, 71, 65, 20, _("RTTY")); valRTTYsweetspot->minimum(200); valRTTYsweetspot->maximum(4000); valRTTYsweetspot->step(1); @@ -2109,7 +2110,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 valRTTYsweetspot->callback((Fl_Callback*)cb_valRTTYsweetspot); o->value(progdefaults.RTTYsweetspot); } // Fl_Value_Input* valRTTYsweetspot - { Fl_Value_Input* o = valPSKsweetspot = new Fl_Value_Input(315, 71, 65, 20, "PSK etal"); + { Fl_Value_Input* o = valPSKsweetspot = new Fl_Value_Input(315, 71, 65, 20, _("PSK etal")); valPSKsweetspot->minimum(200); valPSKsweetspot->maximum(4000); valPSKsweetspot->step(1); @@ -2117,7 +2118,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 valPSKsweetspot->callback((Fl_Callback*)cb_valPSKsweetspot); o->value(progdefaults.PSKsweetspot); } // Fl_Value_Input* valPSKsweetspot - { Fl_Check_Button* o = btnStartAtSweetSpot = new Fl_Check_Button(49, 100, 246, 25, "Start New Modem at Sweet Spot"); + { Fl_Check_Button* o = btnStartAtSweetSpot = new Fl_Check_Button(49, 100, 246, 25, _("Start New Modem at Sweet Spot")); btnStartAtSweetSpot->down_box(FL_DOWN_BOX); btnStartAtSweetSpot->value(1); btnStartAtSweetSpot->callback((Fl_Callback*)cb_btnStartAtSweetSpot); @@ -2127,38 +2128,38 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o tabSweetSpot->end(); } // Fl_Group* tabSweetSpot - { tabSpot = new Fl_Group(2, 55, 403, 170, "Spotting"); - { Fl_Group* o = new Fl_Group(2, 57, 395, 160, "PSK Reporter"); + { tabSpot = new Fl_Group(2, 55, 403, 170, _("Spotting")); + { Fl_Group* o = new Fl_Group(2, 57, 395, 160, _("PSK Reporter")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { btnPSKRepAuto = new Fl_Check_Button(15, 80, 324, 20, "Automatically spot callsigns in decoded text"); + { btnPSKRepAuto = new Fl_Check_Button(15, 80, 324, 20, _("Automatically spot callsigns in decoded text")); btnPSKRepAuto->down_box(FL_DOWN_BOX); btnPSKRepAuto->callback((Fl_Callback*)cb_btnPSKRepAuto); btnPSKRepAuto->value(progdefaults.pskrep_auto); } // Fl_Check_Button* btnPSKRepAuto - { btnPSKRepLog = new Fl_Check_Button(15, 104, 327, 20, "Send reception report when logging a QSO"); + { btnPSKRepLog = new Fl_Check_Button(15, 104, 327, 20, _("Send reception report when logging a QSO")); btnPSKRepLog->down_box(FL_DOWN_BOX); btnPSKRepLog->callback((Fl_Callback*)cb_btnPSKRepLog); btnPSKRepLog->value(progdefaults.pskrep_log); } // Fl_Check_Button* btnPSKRepLog - { inpPSKRepHost = new Fl_Input(55, 155, 220, 24, "Host:"); + { inpPSKRepHost = new Fl_Input(55, 155, 220, 24, _("Host:")); inpPSKRepHost->callback((Fl_Callback*)cb_inpPSKRepHost); inpPSKRepHost->when(FL_WHEN_CHANGED); inpPSKRepHost->value(progdefaults.pskrep_host.c_str()); } // Fl_Input* inpPSKRepHost - { inpPSKRepPort = new Fl_Input(322, 155, 60, 24, "Port:"); + { inpPSKRepPort = new Fl_Input(322, 155, 60, 24, _("Port:")); inpPSKRepPort->callback((Fl_Callback*)cb_inpPSKRepPort); inpPSKRepPort->when(FL_WHEN_CHANGED); inpPSKRepPort->value(progdefaults.pskrep_port.c_str()); } // Fl_Input* inpPSKRepPort - { btnPSKRepInit = new Fl_Button(303, 186, 80, 24, "Initialize"); + { btnPSKRepInit = new Fl_Button(303, 186, 80, 24, _("Initialize")); btnPSKRepInit->callback((Fl_Callback*)cb_btnPSKRepInit); } // Fl_Button* btnPSKRepInit - { boxPSKRepMsg = new Fl_Box(56, 186, 220, 24, ""); + { boxPSKRepMsg = new Fl_Box(56, 186, 220, 24, _("")); boxPSKRepMsg->labelfont(2); boxPSKRepMsg->label(0); } // Fl_Box* boxPSKRepMsg - { btnPSKRepQRG = new Fl_Check_Button(15, 128, 357, 20, "Report QRG (enable only if you have rig control!)"); + { btnPSKRepQRG = new Fl_Check_Button(15, 128, 357, 20, _("Report QRG (enable only if you have rig control!)")); btnPSKRepQRG->down_box(FL_DOWN_BOX); btnPSKRepQRG->callback((Fl_Callback*)cb_btnPSKRepQRG); btnPSKRepQRG->value(progdefaults.pskrep_qrg); @@ -2171,7 +2172,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Tabs* tabsMisc tabMisc->end(); } // Fl_Group* tabMisc - { tabModems = new Fl_Group(0, 25, 400, 195, "Modem"); + { tabModems = new Fl_Group(0, 25, 400, 195, _("Modem")); tabModems->color((Fl_Color)51); tabModems->selection_color((Fl_Color)51); tabModems->hide(); @@ -2179,16 +2180,16 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 tabsModems->color((Fl_Color)51); tabsModems->selection_color((Fl_Color)10); tabsModems->align(FL_ALIGN_TOP_RIGHT); - { tabCW = new Fl_Group(0, 50, 400, 170, "CW"); + { tabCW = new Fl_Group(0, 50, 400, 170, _("CW")); tabCW->hide(); { Fl_Tabs* o = new Fl_Tabs(0, 55, 400, 165); o->selection_color((Fl_Color)215); - { Fl_Group* o = new Fl_Group(0, 85, 400, 135, "CW Ops"); + { Fl_Group* o = new Fl_Group(0, 85, 400, 135, _("CW Ops")); o->align(FL_ALIGN_TOP_LEFT); { Fl_Group* o = new Fl_Group(4, 85, 392, 130); o->box(FL_ENGRAVED_FRAME); - { Fl_Value_Slider* o = sldrCWbandwidth = new Fl_Value_Slider(64, 94, 325, 20, "BW"); - sldrCWbandwidth->tooltip("DSP filter bandwidth"); + { Fl_Value_Slider* o = sldrCWbandwidth = new Fl_Value_Slider(64, 94, 325, 20, _("BW")); + sldrCWbandwidth->tooltip(_("DSP filter bandwidth")); sldrCWbandwidth->type(5); sldrCWbandwidth->color(FL_BACKGROUND2_COLOR); sldrCWbandwidth->minimum(10); @@ -2200,8 +2201,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 sldrCWbandwidth->align(FL_ALIGN_LEFT); o->value(progdefaults.CWbandwidth); } // Fl_Value_Slider* sldrCWbandwidth - { Fl_Counter* o = cntCWrange = new Fl_Counter(139, 118, 65, 20, "Rx Trkg Rng"); - cntCWrange->tooltip("WPM tracking range"); + { Fl_Counter* o = cntCWrange = new Fl_Counter(139, 118, 65, 20, _("Rx Trkg Rng")); + cntCWrange->tooltip(_("WPM tracking range")); cntCWrange->type(1); cntCWrange->minimum(5); cntCWrange->maximum(25); @@ -2211,14 +2212,14 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntCWrange->align(FL_ALIGN_LEFT); o->value(progdefaults.CWrange); } // Fl_Counter* cntCWrange - { Fl_Check_Button* o = btnCWrcvTrack = new Fl_Check_Button(214, 118, 20, 20, "Enable Rx Trkg"); + { Fl_Check_Button* o = btnCWrcvTrack = new Fl_Check_Button(214, 118, 20, 20, _("Enable Rx Trkg")); btnCWrcvTrack->down_box(FL_DOWN_BOX); btnCWrcvTrack->value(1); btnCWrcvTrack->callback((Fl_Callback*)cb_btnCWrcvTrack); btnCWrcvTrack->align(FL_ALIGN_RIGHT); o->value(progdefaults.CWtrack); } // Fl_Check_Button* btnCWrcvTrack - { valCWrcvWPM = new Fl_Value_Output(64, 142, 35, 20, "RxWPM"); + { valCWrcvWPM = new Fl_Value_Output(64, 142, 35, 20, _("RxWPM")); valCWrcvWPM->color(FL_BACKGROUND2_COLOR); valCWrcvWPM->callback((Fl_Callback*)cb_valCWrcvWPM); } // Fl_Value_Output* valCWrcvWPM @@ -2227,7 +2228,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 prgsCWrcvWPM->selection_color((Fl_Color)110); prgsCWrcvWPM->align(FL_ALIGN_CENTER); } // Fl_Progress* prgsCWrcvWPM - { Fl_Value_Slider* o = sldrCWxmtWPM = new Fl_Value_Slider(64, 164, 325, 20, "TxWPM"); + { Fl_Value_Slider* o = sldrCWxmtWPM = new Fl_Value_Slider(64, 164, 325, 20, _("TxWPM")); sldrCWxmtWPM->type(5); sldrCWxmtWPM->color((Fl_Color)215); sldrCWxmtWPM->minimum(5); @@ -2239,8 +2240,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 sldrCWxmtWPM->align(FL_ALIGN_LEFT); o->value(progdefaults.CWspeed); } // Fl_Value_Slider* sldrCWxmtWPM - { Fl_Counter* o = cntCWlowerlimit = new Fl_Counter(202, 189, 65, 20, "Lower"); - cntCWlowerlimit->tooltip("Lower WPM limit"); + { Fl_Counter* o = cntCWlowerlimit = new Fl_Counter(202, 189, 65, 20, _("Lower")); + cntCWlowerlimit->tooltip(_("Lower WPM limit")); cntCWlowerlimit->type(1); cntCWlowerlimit->minimum(5); cntCWlowerlimit->maximum(20); @@ -2250,8 +2251,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntCWlowerlimit->align(FL_ALIGN_LEFT); o->value(progdefaults.CWlowerlimit); } // Fl_Counter* cntCWlowerlimit - { Fl_Counter* o = cntCWupperlimit = new Fl_Counter(324, 189, 65, 20, "Upper"); - cntCWupperlimit->tooltip("Upper WPM limit"); + { Fl_Counter* o = cntCWupperlimit = new Fl_Counter(324, 189, 65, 20, _("Upper")); + cntCWupperlimit->tooltip(_("Upper WPM limit")); cntCWupperlimit->type(1); cntCWupperlimit->minimum(25); cntCWupperlimit->maximum(200); @@ -2261,8 +2262,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntCWupperlimit->align(FL_ALIGN_LEFT); o->value(progdefaults.CWupperlimit); } // Fl_Counter* cntCWupperlimit - { Fl_Counter* o = cntCWdefWPM = new Fl_Counter(64, 189, 64, 21, "Default"); - cntCWdefWPM->tooltip("Default WPM"); + { Fl_Counter* o = cntCWdefWPM = new Fl_Counter(64, 189, 64, 21, _("Default")); + cntCWdefWPM->tooltip(_("Default WPM")); cntCWdefWPM->type(1); cntCWdefWPM->minimum(5); cntCWdefWPM->maximum(200); @@ -2276,14 +2277,14 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 80, 400, 140, "Timing / QSK"); + { Fl_Group* o = new Fl_Group(0, 80, 400, 140, _("Timing / QSK")); o->align(FL_ALIGN_TOP_LEFT); o->hide(); - { Fl_Group* o = new Fl_Group(5, 85, 390, 65, "Timing"); + { Fl_Group* o = new Fl_Group(5, 85, 390, 65, _("Timing")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Counter* o = cntCWweight = new Fl_Counter(60, 114, 65, 20, "Wt. %"); - cntCWweight->tooltip("Dot to Dot-Space Ratio"); + { Fl_Counter* o = cntCWweight = new Fl_Counter(60, 114, 65, 20, _("Wt. %")); + cntCWweight->tooltip(_("Dot to Dot-Space Ratio")); cntCWweight->type(1); cntCWweight->minimum(20); cntCWweight->maximum(80); @@ -2293,22 +2294,20 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntCWweight->align(FL_ALIGN_LEFT); o->value(progdefaults.CWweight); } // Fl_Counter* cntCWweight - { Fl_Counter* o = cntCWdash2dot = new Fl_Counter(201, 114, 64, 21, "Dash/Dot"); - cntCWdash2dot->tooltip("Dash to Dot Ratio"); + { Fl_Counter* o = cntCWdash2dot = new Fl_Counter(201, 114, 64, 21, _("Dash/Dot")); + cntCWdash2dot->tooltip(_("Dash to Dot Ratio")); cntCWdash2dot->type(1); cntCWdash2dot->minimum(2.5); cntCWdash2dot->maximum(4); - cntCWdash2dot->step(0.1); cntCWdash2dot->value(3); cntCWdash2dot->callback((Fl_Callback*)cb_cntCWdash2dot); cntCWdash2dot->align(FL_ALIGN_LEFT); o->value(progdefaults.CWdash2dot); } // Fl_Counter* cntCWdash2dot - { Fl_Counter* o = cntCWrisetime = new Fl_Counter(321, 114, 65, 21, "Edge"); + { Fl_Counter* o = cntCWrisetime = new Fl_Counter(321, 114, 65, 21, _("Edge")); cntCWrisetime->type(1); cntCWrisetime->minimum(0); cntCWrisetime->maximum(15); - cntCWrisetime->step(0.1); cntCWrisetime->value(4); cntCWrisetime->callback((Fl_Callback*)cb_cntCWrisetime); cntCWrisetime->align(FL_ALIGN_LEFT); @@ -2316,18 +2315,18 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Counter* cntCWrisetime o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(5, 150, 390, 65, "QSK"); + { Fl_Group* o = new Fl_Group(5, 150, 390, 65, _("QSK")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = btnQSK = new Fl_Check_Button(175, 175, 25, 15, "QSK on right channel"); - btnQSK->tooltip("Enable QSK on right Channel"); + { Fl_Check_Button* o = btnQSK = new Fl_Check_Button(175, 175, 25, 15, _("QSK on right channel")); + btnQSK->tooltip(_("Enable QSK on right Channel")); btnQSK->down_box(FL_DOWN_BOX); btnQSK->callback((Fl_Callback*)cb_btnQSK); btnQSK->align(FL_ALIGN_LEFT); o->value(progdefaults.QSK); } // Fl_Check_Button* btnQSK - { Fl_Counter* o = cntPreTiming = new Fl_Counter(215, 172, 64, 21, "Pre Timing"); - cntPreTiming->tooltip("Msec pre-keydown"); + { Fl_Counter* o = cntPreTiming = new Fl_Counter(215, 172, 64, 21, _("Pre Timing")); + cntPreTiming->tooltip(_("Msec pre-keydown")); cntPreTiming->type(1); cntPreTiming->minimum(0); cntPreTiming->maximum(50); @@ -2337,8 +2336,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->value(progdefaults.CWpre); o->maximum((int)(2400/progdefaults.CWspeed)/2.0); } // Fl_Counter* cntPreTiming - { Fl_Counter* o = cntPostTiming = new Fl_Counter(315, 172, 64, 21, "Post Timing"); - cntPostTiming->tooltip("Msec post-keydown"); + { Fl_Counter* o = cntPostTiming = new Fl_Counter(315, 172, 64, 21, _("Post Timing")); + cntPostTiming->tooltip(_("Msec post-keydown")); cntPostTiming->type(1); cntPostTiming->minimum(-20); cntPostTiming->maximum(50); @@ -2356,41 +2355,40 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Tabs* o tabCW->end(); } // Fl_Group* tabCW - { tabDomEX = new Fl_Group(0, 50, 400, 170, "Dom"); + { tabDomEX = new Fl_Group(0, 50, 400, 170, _("Dom")); tabDomEX->color((Fl_Color)51); tabDomEX->selection_color((Fl_Color)51); tabDomEX->hide(); - { txtSecondary = new Fl_Input(20, 75, 360, 44, "Secondary Text"); - txtSecondary->tooltip("Text to send during keyboard idle times"); + { txtSecondary = new Fl_Input(20, 75, 360, 44, _("Secondary Text")); + txtSecondary->tooltip(_("Text to send during keyboard idle times")); txtSecondary->type(4); txtSecondary->callback((Fl_Callback*)cb_txtSecondary); txtSecondary->align(FL_ALIGN_TOP_LEFT); txtSecondary->when(FL_WHEN_CHANGED); } // Fl_Input* txtSecondary - { Fl_Counter* o = valDominoEX_BW = new Fl_Counter(20, 130, 63, 21, "BW factor:"); - valDominoEX_BW->tooltip("DSP filter BW relative to signal width"); + { Fl_Counter* o = valDominoEX_BW = new Fl_Counter(20, 130, 63, 21, _("BW factor:")); + valDominoEX_BW->tooltip(_("DSP filter BW relative to signal width")); valDominoEX_BW->type(1); valDominoEX_BW->minimum(1); valDominoEX_BW->maximum(2); - valDominoEX_BW->step(0.1); valDominoEX_BW->value(1.5); valDominoEX_BW->callback((Fl_Callback*)cb_valDominoEX_BW); o->value(progdefaults.DOMINOEX_BW); } // Fl_Counter* valDominoEX_BW - { Fl_Check_Button* o = valDominoEX_FILTER = new Fl_Check_Button(110, 130, 83, 20, "Filter ON"); - valDominoEX_FILTER->tooltip("Enable DSP filtering"); + { Fl_Check_Button* o = valDominoEX_FILTER = new Fl_Check_Button(110, 130, 83, 20, _("Filter ON")); + valDominoEX_FILTER->tooltip(_("Enable DSP filtering")); valDominoEX_FILTER->down_box(FL_DOWN_BOX); valDominoEX_FILTER->value(1); valDominoEX_FILTER->callback((Fl_Callback*)cb_valDominoEX_FILTER); o->value(progdefaults.DOMINOEX_FILTER); } // Fl_Check_Button* valDominoEX_FILTER - { Fl_Check_Button* o = chkDominoEX_FEC = new Fl_Check_Button(220, 130, 51, 20, "FEC"); - chkDominoEX_FEC->tooltip("Add MultiPSK compatible FEC"); + { Fl_Check_Button* o = chkDominoEX_FEC = new Fl_Check_Button(220, 130, 51, 20, _("FEC")); + chkDominoEX_FEC->tooltip(_("Add MultiPSK compatible FEC")); chkDominoEX_FEC->down_box(FL_DOWN_BOX); chkDominoEX_FEC->callback((Fl_Callback*)cb_chkDominoEX_FEC); o->value(progdefaults.DOMINOEX_FEC); } // Fl_Check_Button* chkDominoEX_FEC - { Fl_Counter* o = valDominoEX_PATHS = new Fl_Counter(20, 174, 63, 21, "Paths"); + { Fl_Counter* o = valDominoEX_PATHS = new Fl_Counter(20, 174, 63, 21, _("Paths")); valDominoEX_PATHS->type(1); valDominoEX_PATHS->minimum(4); valDominoEX_PATHS->maximum(8); @@ -2400,10 +2398,9 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 valDominoEX_PATHS->hide(); o->value(progdefaults.DOMINOEX_PATHS); } // Fl_Counter* valDominoEX_PATHS - { Fl_Value_Slider* o = valDomCWI = new Fl_Value_Slider(125, 179, 260, 21, "CWI threshold:"); - valDomCWI->tooltip("CWI detection and suppression"); + { Fl_Value_Slider* o = valDomCWI = new Fl_Value_Slider(125, 179, 260, 21, _("CWI threshold:")); + valDomCWI->tooltip(_("CWI detection and suppression")); valDomCWI->type(1); - valDomCWI->step(0.01); valDomCWI->textsize(14); valDomCWI->callback((Fl_Callback*)cb_valDomCWI); valDomCWI->align(FL_ALIGN_LEFT); @@ -2411,11 +2408,11 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Value_Slider* valDomCWI tabDomEX->end(); } // Fl_Group* tabDomEX - { tabFeld = new Fl_Group(0, 50, 400, 170, "Feld"); + { tabFeld = new Fl_Group(0, 50, 400, 170, _("Feld")); tabFeld->color((Fl_Color)51); tabFeld->selection_color((Fl_Color)51); tabFeld->hide(); - { Fl_Choice* o = selHellFont = new Fl_Choice(260, 62, 122, 20, "Feld Hell Font:"); + { Fl_Choice* o = selHellFont = new Fl_Choice(260, 62, 122, 20, _("Feld Hell Font:")); selHellFont->down_box(FL_BORDER_BOX); selHellFont->labelfont(4); selHellFont->textfont(4); @@ -2423,7 +2420,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->add(szFeldFonts); o->value(progdefaults.feldfontnbr); } // Fl_Choice* selHellFont - { Fl_Value_Slider* o = sldrHellBW = new Fl_Value_Slider(30, 190, 345, 20, "Filter BW"); + { Fl_Value_Slider* o = sldrHellBW = new Fl_Value_Slider(30, 190, 345, 20, _("Filter BW")); sldrHellBW->type(1); sldrHellBW->color((Fl_Color)215); sldrHellBW->minimum(10); @@ -2435,31 +2432,31 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 sldrHellBW->align(FL_ALIGN_TOP_LEFT); o->value(progdefaults.HELL_BW); } // Fl_Value_Slider* sldrHellBW - { Fl_Check_Button* o = btnHellXmtWidth = new Fl_Check_Button(175, 175, 113, 15, "2x Xmt Width"); + { Fl_Check_Button* o = btnHellXmtWidth = new Fl_Check_Button(175, 175, 113, 15, _("2x Xmt Width")); btnHellXmtWidth->down_box(FL_DOWN_BOX); btnHellXmtWidth->callback((Fl_Callback*)cb_btnHellXmtWidth); btnHellXmtWidth->hide(); o->value(progdefaults.HellXmtWidth); } // Fl_Check_Button* btnHellXmtWidth - { Fl_Check_Button* o = btnHellRcvWidth = new Fl_Check_Button(40, 113, 130, 15, "1/2 x Rcv Width"); + { Fl_Check_Button* o = btnHellRcvWidth = new Fl_Check_Button(40, 113, 130, 15, _("1/2 x Rcv Width")); btnHellRcvWidth->down_box(FL_DOWN_BOX); btnHellRcvWidth->callback((Fl_Callback*)cb_btnHellRcvWidth); o->value(progdefaults.HellRcvWidth); } // Fl_Check_Button* btnHellRcvWidth - { Fl_Check_Button* o = btnBlackboard = new Fl_Check_Button(40, 134, 100, 15, "blackboard"); + { Fl_Check_Button* o = btnBlackboard = new Fl_Check_Button(40, 134, 100, 15, _("blackboard")); btnBlackboard->down_box(FL_DOWN_BOX); btnBlackboard->callback((Fl_Callback*)cb_btnBlackboard); o->value(progdefaults.HellBlackboard); } // Fl_Check_Button* btnBlackboard - { Fl_Group* o = new Fl_Group(189, 90, 195, 85, "Pulse Shape"); + { Fl_Group* o = new Fl_Group(189, 90, 195, 85, _("Pulse Shape")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = btnHellFastAttack = new Fl_Check_Button(199, 110, 169, 15, "Fast Attack (2 msec)"); + { Fl_Check_Button* o = btnHellFastAttack = new Fl_Check_Button(199, 110, 169, 15, _("Fast Attack (2 msec)")); btnHellFastAttack->down_box(FL_DOWN_BOX); btnHellFastAttack->callback((Fl_Callback*)cb_btnHellFastAttack); o->value(progdefaults.HellPulseFast); } // Fl_Check_Button* btnHellFastAttack - { Fl_Check_Button* o = btnHellSlowAttack = new Fl_Check_Button(199, 131, 169, 15, "Slow Attack (4 msec)"); + { Fl_Check_Button* o = btnHellSlowAttack = new Fl_Check_Button(199, 131, 169, 15, _("Slow Attack (4 msec)")); btnHellSlowAttack->down_box(FL_DOWN_BOX); btnHellSlowAttack->value(1); btnHellSlowAttack->callback((Fl_Callback*)cb_btnHellSlowAttack); @@ -2467,13 +2464,13 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Check_Button* btnHellSlowAttack o->end(); } // Fl_Group* o - { Fl_Check_Button* o = btnFeldHellIdle = new Fl_Check_Button(40, 155, 135, 15, "Xmt (.) Idle Char"); + { Fl_Check_Button* o = btnFeldHellIdle = new Fl_Check_Button(40, 155, 135, 15, _("Xmt (.) Idle Char")); btnFeldHellIdle->down_box(FL_DOWN_BOX); btnFeldHellIdle->value(1); btnFeldHellIdle->callback((Fl_Callback*)cb_btnFeldHellIdle); o->value(progdefaults.HellXmtIdle); } // Fl_Check_Button* btnFeldHellIdle - { Fl_Spinner* o = valHellXmtWidth = new Fl_Spinner(40, 80, 40, 25, "Xmt Width"); + { Fl_Spinner* o = valHellXmtWidth = new Fl_Spinner(40, 80, 40, 25, _("Xmt Width")); valHellXmtWidth->maximum(3); valHellXmtWidth->value(1); valHellXmtWidth->callback((Fl_Callback*)cb_valHellXmtWidth); @@ -2482,17 +2479,17 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Spinner* valHellXmtWidth tabFeld->end(); } // Fl_Group* tabFeld - { tabMT63 = new Fl_Group(0, 50, 400, 170, "MT-63"); + { tabMT63 = new Fl_Group(0, 50, 400, 170, _("MT-63")); tabMT63->hide(); { Fl_Group* o = new Fl_Group(5, 60, 390, 155); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = btnMT63_8bit = new Fl_Check_Button(55, 90, 163, 15, "8 bit extended chars"); + { Fl_Check_Button* o = btnMT63_8bit = new Fl_Check_Button(55, 90, 163, 15, _("8 bit extended chars")); btnMT63_8bit->down_box(FL_DOWN_BOX); btnMT63_8bit->callback((Fl_Callback*)cb_btnMT63_8bit); o->value(progdefaults.mt63_8bit); } // Fl_Check_Button* btnMT63_8bit - { Fl_Check_Button* o = btnmt63_interleave = new Fl_Check_Button(55, 120, 186, 15, "64 bit interleave (long)"); + { Fl_Check_Button* o = btnmt63_interleave = new Fl_Check_Button(55, 120, 186, 15, _("64 bit interleave (long)")); btnmt63_interleave->down_box(FL_DOWN_BOX); btnmt63_interleave->callback((Fl_Callback*)cb_btnmt63_interleave); o->value(0);if (progdefaults.mt63_interleave == 64) o->value(1); @@ -2501,23 +2498,23 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o tabMT63->end(); } // Fl_Group* tabMT63 - { tabOlivia = new Fl_Group(0, 50, 400, 170, "Olivia"); + { tabOlivia = new Fl_Group(0, 50, 400, 170, _("Olivia")); tabOlivia->color((Fl_Color)51); tabOlivia->selection_color((Fl_Color)51); tabOlivia->hide(); - { Fl_Choice* o = mnuOlivia_Tones = new Fl_Choice(105, 72, 70, 22, "Tones"); + { Fl_Choice* o = mnuOlivia_Tones = new Fl_Choice(105, 72, 70, 22, _("Tones")); mnuOlivia_Tones->down_box(FL_BORDER_BOX); mnuOlivia_Tones->callback((Fl_Callback*)cb_mnuOlivia_Tones); o->add(szOliviaTones); o->value(2); } // Fl_Choice* mnuOlivia_Tones - { Fl_Choice* o = mnuOlivia_Bandwidth = new Fl_Choice(270, 72, 85, 22, "Bandwidth"); + { Fl_Choice* o = mnuOlivia_Bandwidth = new Fl_Choice(270, 72, 85, 22, _("Bandwidth")); mnuOlivia_Bandwidth->down_box(FL_BORDER_BOX); mnuOlivia_Bandwidth->callback((Fl_Callback*)cb_mnuOlivia_Bandwidth); o->add(szOliviaBandwidth); o->value(2); } // Fl_Choice* mnuOlivia_Bandwidth - { cntOlivia_smargin = new Fl_Counter(90, 105, 85, 22, "RX sync tune margin"); + { cntOlivia_smargin = new Fl_Counter(90, 105, 85, 22, _("RX sync tune margin")); cntOlivia_smargin->type(1); cntOlivia_smargin->minimum(2); cntOlivia_smargin->maximum(128); @@ -2526,7 +2523,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntOlivia_smargin->callback((Fl_Callback*)cb_cntOlivia_smargin); cntOlivia_smargin->align(FL_ALIGN_RIGHT); } // Fl_Counter* cntOlivia_smargin - { cntOlivia_sinteg = new Fl_Counter(90, 135, 85, 22, "RX sync integration period"); + { cntOlivia_sinteg = new Fl_Counter(90, 135, 85, 22, _("RX sync integration period")); cntOlivia_sinteg->type(1); cntOlivia_sinteg->minimum(2); cntOlivia_sinteg->maximum(128); @@ -2535,19 +2532,19 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntOlivia_sinteg->callback((Fl_Callback*)cb_cntOlivia_sinteg); cntOlivia_sinteg->align(FL_ALIGN_RIGHT); } // Fl_Counter* cntOlivia_sinteg - { btnOlivia_8bit = new Fl_Check_Button(90, 173, 163, 15, "8 bit extended chars"); + { btnOlivia_8bit = new Fl_Check_Button(90, 173, 163, 15, _("8 bit extended chars")); btnOlivia_8bit->down_box(FL_DOWN_BOX); btnOlivia_8bit->callback((Fl_Callback*)cb_btnOlivia_8bit); } // Fl_Check_Button* btnOlivia_8bit tabOlivia->end(); } // Fl_Group* tabOlivia - { tabPSK = new Fl_Group(0, 50, 400, 170, "Psk"); + { tabPSK = new Fl_Group(0, 50, 400, 170, _("Psk")); { Fl_Tabs* o = new Fl_Tabs(0, 50, 400, 170); o->selection_color((Fl_Color)215); - { Fl_Group* o = new Fl_Group(0, 80, 400, 136, "General"); + { Fl_Group* o = new Fl_Group(0, 80, 400, 136, _("General")); o->align(FL_ALIGN_TOP_LEFT); - { Fl_Counter* o = cntSearchRange = new Fl_Counter(30, 94, 75, 21, "Acq Srch Range"); - cntSearchRange->tooltip("Capture signals within this frequency range"); + { Fl_Counter* o = cntSearchRange = new Fl_Counter(30, 94, 75, 21, _("Acq Srch Range")); + cntSearchRange->tooltip(_("Capture signals within this frequency range")); cntSearchRange->type(1); cntSearchRange->minimum(10); cntSearchRange->maximum(500); @@ -2557,8 +2554,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntSearchRange->align(FL_ALIGN_RIGHT); o->value(progdefaults.SearchRange); } // Fl_Counter* cntSearchRange - { Fl_Counter* o = cntACQsn = new Fl_Counter(225, 94, 75, 21, "Acq s/n (db)"); - cntACQsn->tooltip("Capture signals over this threshold"); + { Fl_Counter* o = cntACQsn = new Fl_Counter(225, 94, 75, 21, _("Acq s/n (db)")); + cntACQsn->tooltip(_("Capture signals over this threshold")); cntACQsn->type(1); cntACQsn->minimum(3); cntACQsn->maximum(20); @@ -2568,16 +2565,16 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntACQsn->align(FL_ALIGN_RIGHT); o->value(progdefaults.ACQsn); } // Fl_Counter* cntACQsn - { Fl_Group* o = new Fl_Group(5, 143, 390, 73, "S/N, Imd Behavior"); + { Fl_Group* o = new Fl_Group(5, 143, 390, 73, _("S/N, Imd Behavior")); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = new Fl_Check_Button(190, 172, 70, 15, "Dim"); - o->tooltip("Check for dimming / uncheck for clear"); + { Fl_Check_Button* o = new Fl_Check_Button(190, 172, 70, 15, _("Dim")); + o->tooltip(_("Check for dimming / uncheck for clear")); o->down_box(FL_DOWN_BOX); o->callback((Fl_Callback*)cb_Dim); o->value(progdefaults.StatusDim); } // Fl_Check_Button* o - { Fl_Counter* o = new Fl_Counter(30, 169, 75, 21, "Seconds to "); - o->tooltip("Time delay in seconds to dim / clear (0 disables)"); + { Fl_Counter* o = new Fl_Counter(30, 169, 75, 21, _("Seconds to ")); + o->tooltip(_("Time delay in seconds to dim / clear (0 disables)")); o->type(1); o->minimum(0); o->maximum(30); @@ -2590,18 +2587,18 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 75, 400, 140, "Mail"); + { Fl_Group* o = new Fl_Group(0, 75, 400, 140, _("Mail")); o->align(FL_ALIGN_TOP_LEFT); o->hide(); - { Fl_Check_Button* o = btnPSKmailSweetSpot = new Fl_Check_Button(55, 100, 130, 20, "use sweetspot"); - btnPSKmailSweetSpot->tooltip("Return Tx frequency to sweetspot"); + { Fl_Check_Button* o = btnPSKmailSweetSpot = new Fl_Check_Button(55, 100, 130, 20, _("use sweetspot")); + btnPSKmailSweetSpot->tooltip(_("Return Tx frequency to sweetspot")); btnPSKmailSweetSpot->down_box(FL_DOWN_BOX); btnPSKmailSweetSpot->value(1); btnPSKmailSweetSpot->callback((Fl_Callback*)cb_btnPSKmailSweetSpot); o->value(progdefaults.PSKmailSweetSpot); } // Fl_Check_Button* btnPSKmailSweetSpot - { Fl_Counter* o = cntServerOffset = new Fl_Counter(55, 129, 80, 21, "Server Search Range"); - cntServerOffset->tooltip("Listen for signals within this range"); + { Fl_Counter* o = cntServerOffset = new Fl_Counter(55, 129, 80, 21, _("Server Search Range")); + cntServerOffset->tooltip(_("Listen for signals within this range")); cntServerOffset->type(1); cntServerOffset->minimum(10); cntServerOffset->maximum(500); @@ -2613,23 +2610,23 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Counter* cntServerOffset o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 80, 400, 140, "Viewer"); + { Fl_Group* o = new Fl_Group(0, 80, 400, 140, _("Viewer")); o->align(FL_ALIGN_TOP_LEFT); o->hide(); - { Fl_Check_Button* o = btnMarquee = new Fl_Check_Button(10, 110, 120, 15, "Marquee style"); - btnMarquee->tooltip("Continuous horizontal scroll of Rx data"); + { Fl_Check_Button* o = btnMarquee = new Fl_Check_Button(10, 110, 120, 15, _("Marquee style")); + btnMarquee->tooltip(_("Continuous horizontal scroll of Rx data")); btnMarquee->down_box(FL_DOWN_BOX); btnMarquee->callback((Fl_Callback*)cb_btnMarquee); o->value(progdefaults.VIEWERmarquee); } // Fl_Check_Button* btnMarquee - { Fl_Check_Button* o = btnShowFrequencies = new Fl_Check_Button(10, 154, 109, 15, "Show Freq\'s"); - btnShowFrequencies->tooltip("Show frequencies on left"); + { Fl_Check_Button* o = btnShowFrequencies = new Fl_Check_Button(10, 154, 109, 15, _("Show Freq\'s")); + btnShowFrequencies->tooltip(_("Show frequencies on left")); btnShowFrequencies->down_box(FL_DOWN_BOX); btnShowFrequencies->callback((Fl_Callback*)cb_btnShowFrequencies); o->value(progdefaults.VIEWERshowfreq); } // Fl_Check_Button* btnShowFrequencies - { Fl_Spinner* o = cntChannels = new Fl_Spinner(265, 150, 39, 25, "# Channels"); - cntChannels->tooltip("Number of channels to monitor"); + { Fl_Spinner* o = cntChannels = new Fl_Spinner(265, 150, 39, 25, _("# Channels")); + cntChannels->tooltip(_("Number of channels to monitor")); cntChannels->value(1); cntChannels->callback((Fl_Callback*)cb_cntChannels); cntChannels->align(FL_ALIGN_RIGHT); @@ -2638,7 +2635,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->step(1); o->value(progdefaults.VIEWERchannels); } // Fl_Spinner* cntChannels - { Fl_Spinner* o = cntStartFrequency = new Fl_Spinner(134, 150, 50, 25, "Start Freq"); + { Fl_Spinner* o = cntStartFrequency = new Fl_Spinner(134, 150, 50, 25, _("Start Freq")); cntStartFrequency->value(1); cntStartFrequency->callback((Fl_Callback*)cb_cntStartFrequency); cntStartFrequency->align(FL_ALIGN_RIGHT); @@ -2647,8 +2644,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->step(100); o->value(progdefaults.VIEWERstart); } // Fl_Spinner* cntStartFrequency - { Fl_Spinner* o = cntTimeout = new Fl_Spinner(135, 105, 50, 25, "Aging (sec)"); - cntTimeout->tooltip("Clear channel after # seconds inactivity"); + { Fl_Spinner* o = cntTimeout = new Fl_Spinner(135, 105, 50, 25, _("Aging (sec)")); + cntTimeout->tooltip(_("Clear channel after # seconds inactivity")); cntTimeout->value(1); cntTimeout->callback((Fl_Callback*)cb_cntTimeout); cntTimeout->align(FL_ALIGN_RIGHT); @@ -2663,60 +2660,60 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Tabs* o tabPSK->end(); } // Fl_Group* tabPSK - { tabRTTY = new Fl_Group(0, 50, 400, 170, "RTTY"); + { tabRTTY = new Fl_Group(0, 50, 400, 170, _("RTTY")); tabRTTY->color((Fl_Color)51); tabRTTY->selection_color((Fl_Color)51); tabRTTY->hide(); - { Fl_Choice* o = selShift = new Fl_Choice(48, 60, 77, 22, "Shift"); + { Fl_Choice* o = selShift = new Fl_Choice(48, 60, 77, 22, _("Shift")); selShift->down_box(FL_BORDER_BOX); selShift->callback((Fl_Callback*)cb_selShift); selShift->when(FL_WHEN_CHANGED); o->add(szShifts); } // Fl_Choice* selShift - { Fl_Choice* o = selBaud = new Fl_Choice(48, 84, 77, 22, "Baud"); + { Fl_Choice* o = selBaud = new Fl_Choice(48, 84, 77, 22, _("Baud")); selBaud->down_box(FL_BORDER_BOX); selBaud->callback((Fl_Callback*)cb_selBaud); selBaud->when(FL_WHEN_CHANGED); o->add(szBauds); } // Fl_Choice* selBaud - { Fl_Choice* o = selBits = new Fl_Choice(48, 109, 77, 22, "Bits"); + { Fl_Choice* o = selBits = new Fl_Choice(48, 109, 77, 22, _("Bits")); selBits->down_box(FL_BORDER_BOX); selBits->callback((Fl_Callback*)cb_selBits); selBits->when(FL_WHEN_CHANGED); o->add(szSelBits); } // Fl_Choice* selBits - { Fl_Choice* o = selParity = new Fl_Choice(48, 133, 77, 22, "Parity"); + { Fl_Choice* o = selParity = new Fl_Choice(48, 133, 77, 22, _("Parity")); selParity->down_box(FL_BORDER_BOX); selParity->callback((Fl_Callback*)cb_selParity); selParity->when(FL_WHEN_CHANGED); o->add(szParity); } // Fl_Choice* selParity - { Fl_Choice* o = selStopBits = new Fl_Choice(48, 158, 77, 22, "Stop"); + { Fl_Choice* o = selStopBits = new Fl_Choice(48, 158, 77, 22, _("Stop")); selStopBits->down_box(FL_BORDER_BOX); selStopBits->callback((Fl_Callback*)cb_selStopBits); selStopBits->when(FL_WHEN_CHANGED); o->add(szStopBits); } // Fl_Choice* selStopBits - { Fl_Check_Button* o = chkPseudoFSK = new Fl_Check_Button(98, 185, 22, 22, "PseudoFSK"); + { Fl_Check_Button* o = chkPseudoFSK = new Fl_Check_Button(98, 185, 22, 22, _("PseudoFSK")); chkPseudoFSK->down_box(FL_DOWN_BOX); chkPseudoFSK->callback((Fl_Callback*)cb_chkPseudoFSK); chkPseudoFSK->align(FL_ALIGN_LEFT); o->value(progdefaults.PseudoFSK); } // Fl_Check_Button* chkPseudoFSK - { Fl_Check_Button* o = btnCRCRLF = new Fl_Check_Button(364, 60, 22, 22, "CR-CR-LF"); + { Fl_Check_Button* o = btnCRCRLF = new Fl_Check_Button(364, 60, 22, 22, _("CR-CR-LF")); btnCRCRLF->down_box(FL_DOWN_BOX); btnCRCRLF->callback((Fl_Callback*)cb_btnCRCRLF); btnCRCRLF->align(FL_ALIGN_LEFT); btnCRCRLF->when(FL_WHEN_RELEASE_ALWAYS); o->value(progdefaults.rtty_crcrlf); } // Fl_Check_Button* btnCRCRLF - { Fl_Check_Button* o = btnAUTOCRLF = new Fl_Check_Button(364, 88, 22, 22, "AutoCRLF"); + { Fl_Check_Button* o = btnAUTOCRLF = new Fl_Check_Button(364, 88, 22, 22, _("AutoCRLF")); btnAUTOCRLF->down_box(FL_DOWN_BOX); btnAUTOCRLF->callback((Fl_Callback*)cb_btnAUTOCRLF); btnAUTOCRLF->align(FL_ALIGN_LEFT); o->value(progdefaults.rtty_autocrlf); } // Fl_Check_Button* btnAUTOCRLF - { cntrAUTOCRLF = new Fl_Counter(321, 117, 65, 20, "after:"); + { cntrAUTOCRLF = new Fl_Counter(321, 117, 65, 20, _("after:")); cntrAUTOCRLF->type(1); cntrAUTOCRLF->minimum(68); cntrAUTOCRLF->maximum(80); @@ -2725,24 +2722,24 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntrAUTOCRLF->callback((Fl_Callback*)cb_cntrAUTOCRLF); cntrAUTOCRLF->align(FL_ALIGN_LEFT); } // Fl_Counter* cntrAUTOCRLF - { Fl_Group* o = new Fl_Group(135, 60, 130, 60, "AFC"); + { Fl_Group* o = new Fl_Group(135, 60, 130, 60, _("AFC")); o->box(FL_ENGRAVED_FRAME); o->color((Fl_Color)51); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { btnRTTYafc[0] = new Fl_Round_Button(190, 60, 70, 20, "Slow"); + { btnRTTYafc[0] = new Fl_Round_Button(190, 60, 70, 20, _("Slow")); btnRTTYafc[0]->type(102); btnRTTYafc[0]->down_box(FL_DIAMOND_DOWN_BOX); btnRTTYafc[0]->selection_color((Fl_Color)2); btnRTTYafc[0]->callback((Fl_Callback*)cb_btnRTTYafc); } // Fl_Round_Button* btnRTTYafc[0] - { btnRTTYafc[1] = new Fl_Round_Button(190, 82, 70, 15, "Normal"); + { btnRTTYafc[1] = new Fl_Round_Button(190, 82, 70, 15, _("Normal")); btnRTTYafc[1]->type(102); btnRTTYafc[1]->down_box(FL_DIAMOND_DOWN_BOX); btnRTTYafc[1]->value(1); btnRTTYafc[1]->selection_color((Fl_Color)2); btnRTTYafc[1]->callback((Fl_Callback*)cb_btnRTTYafc1); } // Fl_Round_Button* btnRTTYafc[1] - { btnRTTYafc[2] = new Fl_Round_Button(190, 100, 70, 15, "Fast"); + { btnRTTYafc[2] = new Fl_Round_Button(190, 100, 70, 15, _("Fast")); btnRTTYafc[2]->type(102); btnRTTYafc[2]->down_box(FL_DIAMOND_DOWN_BOX); btnRTTYafc[2]->selection_color((Fl_Color)2); @@ -2750,29 +2747,29 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Round_Button* btnRTTYafc[2] o->end(); } // Fl_Group* o - { Fl_Check_Button* o = btnPreferXhairScope = new Fl_Check_Button(364, 153, 22, 22, "X-scope"); + { Fl_Check_Button* o = btnPreferXhairScope = new Fl_Check_Button(364, 153, 22, 22, _("X-scope")); btnPreferXhairScope->down_box(FL_DOWN_BOX); btnPreferXhairScope->callback((Fl_Callback*)cb_btnPreferXhairScope); btnPreferXhairScope->align(FL_ALIGN_LEFT); o->value(progdefaults.PreferXhairScope); } // Fl_Check_Button* btnPreferXhairScope - { Fl_Check_Button* o = chkXagc = new Fl_Check_Button(364, 185, 22, 22, "X-agc"); + { Fl_Check_Button* o = chkXagc = new Fl_Check_Button(364, 185, 22, 22, _("X-agc")); chkXagc->down_box(FL_DOWN_BOX); chkXagc->callback((Fl_Callback*)cb_chkXagc); chkXagc->align(FL_ALIGN_LEFT); chkXagc->hide(); o->value(progdefaults.Xagc); } // Fl_Check_Button* chkXagc - { Fl_Group* o = new Fl_Group(135, 119, 130, 62, "Unshift On Space"); + { Fl_Group* o = new Fl_Group(135, 119, 130, 62, _("Unshift On Space")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = chkUOSrx = new Fl_Check_Button(167, 148, 24, 18, "Rx"); + { Fl_Check_Button* o = chkUOSrx = new Fl_Check_Button(167, 148, 24, 18, _("Rx")); chkUOSrx->down_box(FL_DOWN_BOX); chkUOSrx->callback((Fl_Callback*)cb_chkUOSrx); chkUOSrx->align(FL_ALIGN_LEFT); o->value(progdefaults.UOSrx); } // Fl_Check_Button* chkUOSrx - { Fl_Check_Button* o = chkUOStx = new Fl_Check_Button(224, 147, 24, 19, "Tx"); + { Fl_Check_Button* o = chkUOStx = new Fl_Check_Button(224, 147, 24, 19, _("Tx")); chkUOStx->down_box(FL_DOWN_BOX); chkUOStx->callback((Fl_Callback*)cb_chkUOStx); chkUOStx->align(FL_ALIGN_LEFT); @@ -2782,35 +2779,34 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o tabRTTY->end(); } // Fl_Group* tabRTTY - { tabTHOR = new Fl_Group(0, 50, 400, 170, "Thor"); + { tabTHOR = new Fl_Group(0, 50, 400, 170, _("Thor")); tabTHOR->color((Fl_Color)51); tabTHOR->selection_color((Fl_Color)51); tabTHOR->hide(); - { txtTHORSecondary = new Fl_Input(20, 75, 360, 44, "Secondary Text"); - txtTHORSecondary->tooltip("Text to send during keyboard idle times"); + { txtTHORSecondary = new Fl_Input(20, 75, 360, 44, _("Secondary Text")); + txtTHORSecondary->tooltip(_("Text to send during keyboard idle times")); txtTHORSecondary->type(4); txtTHORSecondary->callback((Fl_Callback*)cb_txtTHORSecondary); txtTHORSecondary->align(FL_ALIGN_TOP_LEFT); txtTHORSecondary->when(FL_WHEN_CHANGED); } // Fl_Input* txtTHORSecondary - { Fl_Counter* o = valTHOR_BW = new Fl_Counter(20, 130, 63, 21, "BW factor:"); - valTHOR_BW->tooltip("DSP filter BW relative to signal width"); + { Fl_Counter* o = valTHOR_BW = new Fl_Counter(20, 130, 63, 21, _("BW factor:")); + valTHOR_BW->tooltip(_("DSP filter BW relative to signal width")); valTHOR_BW->type(1); valTHOR_BW->minimum(1); valTHOR_BW->maximum(2); - valTHOR_BW->step(0.1); valTHOR_BW->value(1.5); valTHOR_BW->callback((Fl_Callback*)cb_valTHOR_BW); o->value(progdefaults.THOR_BW); } // Fl_Counter* valTHOR_BW - { Fl_Check_Button* o = valTHOR_FILTER = new Fl_Check_Button(110, 130, 83, 20, "Filter ON"); - valTHOR_FILTER->tooltip("Enable DSP filtering"); + { Fl_Check_Button* o = valTHOR_FILTER = new Fl_Check_Button(110, 130, 83, 20, _("Filter ON")); + valTHOR_FILTER->tooltip(_("Enable DSP filtering")); valTHOR_FILTER->down_box(FL_DOWN_BOX); valTHOR_FILTER->value(1); valTHOR_FILTER->callback((Fl_Callback*)cb_valTHOR_FILTER); o->value(progdefaults.THOR_FILTER); } // Fl_Check_Button* valTHOR_FILTER - { Fl_Counter* o = valTHOR_PATHS = new Fl_Counter(20, 174, 63, 21, "Paths"); + { Fl_Counter* o = valTHOR_PATHS = new Fl_Counter(20, 174, 63, 21, _("Paths")); valTHOR_PATHS->type(1); valTHOR_PATHS->minimum(4); valTHOR_PATHS->maximum(8); @@ -2820,16 +2816,15 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 valTHOR_PATHS->hide(); o->value(progdefaults.THOR_PATHS); } // Fl_Counter* valTHOR_PATHS - { Fl_Check_Button* o = valTHOR_SOFT = new Fl_Check_Button(215, 130, 108, 20, "Soft decode"); - valTHOR_SOFT->tooltip("Detector thresholds track s/n"); + { Fl_Check_Button* o = valTHOR_SOFT = new Fl_Check_Button(215, 130, 108, 20, _("Soft decode")); + valTHOR_SOFT->tooltip(_("Detector thresholds track s/n")); valTHOR_SOFT->down_box(FL_DOWN_BOX); valTHOR_SOFT->callback((Fl_Callback*)cb_valTHOR_SOFT); o->value(progdefaults.THOR_SOFT); } // Fl_Check_Button* valTHOR_SOFT - { Fl_Value_Slider* o = valThorCWI = new Fl_Value_Slider(120, 174, 260, 21, "CWI threshold:"); - valThorCWI->tooltip("CWI detection and suppression"); + { Fl_Value_Slider* o = valThorCWI = new Fl_Value_Slider(120, 174, 260, 21, _("CWI threshold:")); + valThorCWI->tooltip(_("CWI detection and suppression")); valThorCWI->type(1); - valThorCWI->step(0.01); valThorCWI->textsize(14); valThorCWI->callback((Fl_Callback*)cb_valThorCWI); valThorCWI->align(FL_ALIGN_LEFT); @@ -2841,32 +2836,32 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Tabs* tabsModems tabModems->end(); } // Fl_Group* tabModems - { tabOperator = new Fl_Group(0, 25, 400, 195, "Oper"); + { tabOperator = new Fl_Group(0, 25, 400, 195, _("Oper")); tabOperator->color((Fl_Color)51); tabOperator->selection_color((Fl_Color)51); tabOperator->callback((Fl_Callback*)cb_tabOperator); tabOperator->when(FL_WHEN_CHANGED); - { inpMyCallsign = new Fl_Input(78, 36, 85, 24, "Callsign:"); + { inpMyCallsign = new Fl_Input(78, 36, 85, 24, _("Callsign:")); inpMyCallsign->callback((Fl_Callback*)cb_inpMyCallsign); } // Fl_Input* inpMyCallsign - { inpMyName = new Fl_Input(271, 36, 120, 24, "Name:"); + { inpMyName = new Fl_Input(271, 36, 120, 24, _("Name:")); inpMyName->callback((Fl_Callback*)cb_inpMyName); } // Fl_Input* inpMyName - { inpMyQth = new Fl_Input(79, 63, 312, 24, "Qth:"); + { inpMyQth = new Fl_Input(79, 63, 312, 24, _("Qth:")); inpMyQth->callback((Fl_Callback*)cb_inpMyQth); } // Fl_Input* inpMyQth - { inpMyLocator = new Fl_Input(78, 116, 85, 24, "Locator:"); + { inpMyLocator = new Fl_Input(78, 116, 85, 24, _("Locator:")); inpMyLocator->callback((Fl_Callback*)cb_inpMyLocator); } // Fl_Input* inpMyLocator - { Fl_Group* o = new Fl_Group(5, 145, 390, 70, "Contest Setup"); + { Fl_Group* o = new Fl_Group(5, 145, 390, 70, _("Contest Setup")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { btnUseLeadingZeros = new Fl_Check_Button(42, 175, 154, 15, "Use Leading Zeros"); + { btnUseLeadingZeros = new Fl_Check_Button(42, 175, 154, 15, _("Use Leading Zeros")); btnUseLeadingZeros->down_box(FL_DOWN_BOX); btnUseLeadingZeros->value(1); btnUseLeadingZeros->callback((Fl_Callback*)cb_btnUseLeadingZeros); } // Fl_Check_Button* btnUseLeadingZeros - { nbrContestStart = new Fl_Value_Input(216, 170, 45, 24, "Starting #:"); + { nbrContestStart = new Fl_Value_Input(216, 170, 45, 24, _("Starting #:")); nbrContestStart->minimum(1); nbrContestStart->maximum(10000); nbrContestStart->step(1); @@ -2874,7 +2869,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 nbrContestStart->callback((Fl_Callback*)cb_nbrContestStart); nbrContestStart->align(FL_ALIGN_TOP); } // Fl_Value_Input* nbrContestStart - { nbrContestDigits = new Fl_Value_Input(298, 170, 45, 24, "# of digits:"); + { nbrContestDigits = new Fl_Value_Input(298, 170, 45, 24, _("# of digits:")); nbrContestDigits->minimum(1); nbrContestDigits->maximum(5); nbrContestDigits->step(1); @@ -2884,67 +2879,67 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Value_Input* nbrContestDigits o->end(); } // Fl_Group* o - { inpMyAntenna = new Fl_Input(78, 89, 312, 24, "Antenna:"); + { inpMyAntenna = new Fl_Input(78, 89, 312, 24, _("Antenna:")); inpMyAntenna->callback((Fl_Callback*)cb_inpMyAntenna); } // Fl_Input* inpMyAntenna tabOperator->end(); } // Fl_Group* tabOperator - { tabQRZ = new Fl_Group(0, 25, 400, 195, "Qrz"); + { tabQRZ = new Fl_Group(0, 25, 400, 195, _("Qrz")); tabQRZ->color((Fl_Color)51); tabQRZ->selection_color((Fl_Color)51); tabQRZ->hide(); - { btnQRZnotavailable = new Fl_Round_Button(17, 45, 110, 20, "Not available"); + { btnQRZnotavailable = new Fl_Round_Button(17, 45, 110, 20, _("Not available")); btnQRZnotavailable->down_box(FL_ROUND_DOWN_BOX); btnQRZnotavailable->value(1); btnQRZnotavailable->callback((Fl_Callback*)cb_btnQRZnotavailable); btnQRZnotavailable->value(progdefaults.QRZ == QRZ_NONE); } // Fl_Round_Button* btnQRZnotavailable - { btnQRZcdrom = new Fl_Round_Button(17, 71, 103, 20, "QRZ cdrom"); + { btnQRZcdrom = new Fl_Round_Button(17, 71, 103, 20, _("QRZ cdrom")); btnQRZcdrom->down_box(FL_ROUND_DOWN_BOX); btnQRZcdrom->callback((Fl_Callback*)cb_btnQRZcdrom); btnQRZcdrom->value(progdefaults.QRZ == QRZ_CD); } // Fl_Round_Button* btnQRZcdrom - { btnQRZonline = new Fl_Round_Button(17, 98, 100, 20, "QRZ online"); - btnQRZonline->tooltip("This service may not be available"); + { btnQRZonline = new Fl_Round_Button(17, 98, 100, 20, _("QRZ online")); + btnQRZonline->tooltip(_("This service may not be available")); btnQRZonline->down_box(FL_ROUND_DOWN_BOX); btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline); btnQRZonline->value(progdefaults.QRZ == QRZ_NET_HTML); } // Fl_Round_Button* btnQRZonline - { Fl_Input* o = txtQRZpathname = new Fl_Input(140, 69, 255, 25, "at:"); - txtQRZpathname->tooltip("ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database"); + { Fl_Input* o = txtQRZpathname = new Fl_Input(140, 69, 255, 25, _("at:")); + txtQRZpathname->tooltip(_("ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database")); txtQRZpathname->callback((Fl_Callback*)cb_txtQRZpathname); o->value(progdefaults.QRZpathname.c_str()); } // Fl_Input* txtQRZpathname - { Fl_Group* o = new Fl_Group(5, 125, 390, 90, "Paid Online Subscription"); + { Fl_Group* o = new Fl_Group(5, 125, 390, 90, _("Paid Online Subscription")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Input* o = inpQRZusername = new Fl_Input(125, 150, 90, 25, "User name"); - inpQRZusername->tooltip("subscription user name"); + { Fl_Input* o = inpQRZusername = new Fl_Input(125, 150, 90, 25, _("User name")); + inpQRZusername->tooltip(_("subscription user name")); inpQRZusername->callback((Fl_Callback*)cb_inpQRZusername); inpQRZusername->align(FL_ALIGN_RIGHT); o->value(progdefaults.QRZusername.c_str()); } // Fl_Input* inpQRZusername - { Fl_Input* o = inpQRZuserpassword = new Fl_Input(125, 180, 90, 25, "Password"); - inpQRZuserpassword->tooltip("subscription password"); + { Fl_Input* o = inpQRZuserpassword = new Fl_Input(125, 180, 90, 25, _("Password")); + inpQRZuserpassword->tooltip(_("subscription password")); inpQRZuserpassword->callback((Fl_Callback*)cb_inpQRZuserpassword); inpQRZuserpassword->align(FL_ALIGN_RIGHT); o->value(progdefaults.QRZuserpassword.c_str()); o->type(progdefaults.SHOWPASSWORD); } // Fl_Input* inpQRZuserpassword - { btnQRZsub = new Fl_Round_Button(17, 152, 90, 20, "QRZ"); - btnQRZsub->tooltip("You need a paid QRZ on-line subscription for access"); + { btnQRZsub = new Fl_Round_Button(17, 152, 90, 20, _("QRZ")); + btnQRZsub->tooltip(_("You need a paid QRZ on-line subscription for access")); btnQRZsub->down_box(FL_ROUND_DOWN_BOX); btnQRZsub->callback((Fl_Callback*)cb_btnQRZsub); btnQRZsub->value(progdefaults.QRZ == QRZ_NET_SUB); } // Fl_Round_Button* btnQRZsub - { btnHamcall = new Fl_Round_Button(17, 182, 90, 20, "Hamcall"); - btnHamcall->tooltip("You need a paid Hamcall on-line subscription to access"); + { btnHamcall = new Fl_Round_Button(17, 182, 90, 20, _("Hamcall")); + btnHamcall->tooltip(_("You need a paid Hamcall on-line subscription to access")); btnHamcall->down_box(FL_ROUND_DOWN_BOX); btnHamcall->callback((Fl_Callback*)cb_btnHamcall); btnHamcall->value(progdefaults.QRZ == QRZ_HAMCALL); } // Fl_Round_Button* btnHamcall - { Fl_Button* o = btnQRZpasswordShow = new Fl_Button(305, 180, 50, 25, "Show"); - btnQRZpasswordShow->tooltip("Show / Hide user password"); + { Fl_Button* o = btnQRZpasswordShow = new Fl_Button(305, 180, 50, 25, _("Show")); + btnQRZpasswordShow->tooltip(_("Show / Hide user password")); btnQRZpasswordShow->callback((Fl_Callback*)cb_btnQRZpasswordShow); o->label((progdefaults.SHOWPASSWORD & FL_SECRET_INPUT) ? "Show" : "Hide"); } // Fl_Button* btnQRZpasswordShow @@ -2952,117 +2947,117 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* o tabQRZ->end(); } // Fl_Group* tabQRZ - { tabRig = new Fl_Group(0, 25, 401, 196, "Rig"); + { tabRig = new Fl_Group(0, 25, 401, 196, _("Rig")); tabRig->hide(); { Fl_Tabs* o = new Fl_Tabs(0, 25, 401, 196); o->selection_color((Fl_Color)10); - { Fl_Group* o = new Fl_Group(0, 50, 400, 170, "H/W ptt"); - o->tooltip("Tottle DTR for ptt"); + { Fl_Group* o = new Fl_Group(0, 50, 400, 170, _("H/W ptt")); + o->tooltip(_("Tottle DTR for ptt")); o->hide(); - { btnPTT[0] = new Fl_Round_Button(15, 70, 74, 17, "none"); + { btnPTT[0] = new Fl_Round_Button(15, 70, 74, 17, _("none")); btnPTT[0]->down_box(FL_DIAMOND_DOWN_BOX); btnPTT[0]->value(1); btnPTT[0]->selection_color((Fl_Color)1); btnPTT[0]->callback((Fl_Callback*)cb_btnPTT); btnPTT[0]->hide(); } // Fl_Round_Button* btnPTT[0] - { btnPTT[4] = new Fl_Round_Button(245, 75, 20, 19, "use Serial Port h/w"); - btnPTT[4]->tooltip("PTT controlled via serial port"); + { btnPTT[4] = new Fl_Round_Button(245, 75, 20, 19, _("use Serial Port h/w")); + btnPTT[4]->tooltip(_("PTT controlled via serial port")); btnPTT[4]->down_box(FL_DIAMOND_DOWN_BOX); btnPTT[4]->selection_color((Fl_Color)1); btnPTT[4]->callback((Fl_Callback*)cb_btnPTT1); btnPTT[4]->align(FL_ALIGN_LEFT); } // Fl_Round_Button* btnPTT[4] - { btnRTSptt = new Fl_Round_Button(100, 160, 54, 15, "RTS"); - btnRTSptt->tooltip("Toggle RTS for ptt"); + { btnRTSptt = new Fl_Round_Button(100, 160, 54, 15, _("RTS")); + btnRTSptt->tooltip(_("Toggle RTS for ptt")); btnRTSptt->down_box(FL_DOWN_BOX); btnRTSptt->callback((Fl_Callback*)cb_btnRTSptt); } // Fl_Round_Button* btnRTSptt - { btnDTRptt = new Fl_Round_Button(100, 180, 59, 15, "DTR"); + { btnDTRptt = new Fl_Round_Button(100, 180, 59, 15, _("DTR")); btnDTRptt->down_box(FL_DOWN_BOX); btnDTRptt->callback((Fl_Callback*)cb_btnDTRptt); } // Fl_Round_Button* btnDTRptt - { btnRTSplusV = new Fl_Round_Button(172, 160, 87, 15, "RTS = +V"); - btnRTSplusV->tooltip("initial voltage on RTS"); + { btnRTSplusV = new Fl_Round_Button(172, 160, 87, 15, _("RTS = +V")); + btnRTSplusV->tooltip(_("initial voltage on RTS")); btnRTSplusV->down_box(FL_DOWN_BOX); btnRTSplusV->callback((Fl_Callback*)cb_btnRTSplusV); } // Fl_Round_Button* btnRTSplusV - { btnDTRplusV = new Fl_Round_Button(172, 180, 87, 15, "DTR = +V"); - btnDTRplusV->tooltip("Initial voltage on DTR"); + { btnDTRplusV = new Fl_Round_Button(172, 180, 87, 15, _("DTR = +V")); + btnDTRplusV->tooltip(_("Initial voltage on DTR")); btnDTRplusV->down_box(FL_DOWN_BOX); btnDTRplusV->callback((Fl_Callback*)cb_btnDTRplusV); } // Fl_Round_Button* btnDTRplusV - { inpTTYdev = new Fl_Input_Choice(136, 113, 125, 22, "Port:"); - inpTTYdev->tooltip("Select serial port"); + { inpTTYdev = new Fl_Input_Choice(136, 113, 125, 22, _("Port:")); + inpTTYdev->tooltip(_("Select serial port")); inpTTYdev->callback((Fl_Callback*)cb_inpTTYdev); } // Fl_Input_Choice* inpTTYdev - { btnInitHWPTT = new Fl_Button(275, 186, 113, 24, "Initialize"); + { btnInitHWPTT = new Fl_Button(275, 186, 113, 24, _("Initialize")); btnInitHWPTT->callback((Fl_Callback*)cb_btnInitHWPTT); } // Fl_Button* btnInitHWPTT o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 50, 400, 170, "RigCAT"); - o->tooltip("Rig Control using xml spec file"); + { Fl_Group* o = new Fl_Group(0, 50, 400, 170, _("RigCAT")); + o->tooltip(_("Rig Control using xml spec file")); o->hide(); - { chkUSERIGCAT = new Fl_Check_Button(110, 67, 20, 20, "use rigCAT"); - chkUSERIGCAT->tooltip("Select rigCAT for rig control"); + { chkUSERIGCAT = new Fl_Check_Button(110, 67, 20, 20, _("use rigCAT")); + chkUSERIGCAT->tooltip(_("Select rigCAT for rig control")); chkUSERIGCAT->down_box(FL_DOWN_BOX); chkUSERIGCAT->callback((Fl_Callback*)cb_chkUSERIGCAT); } // Fl_Check_Button* chkUSERIGCAT - { btnPTT[3] = new Fl_Round_Button(242, 67, 128, 19, "command PTT"); - btnPTT[3]->tooltip("use PTT data command"); + { btnPTT[3] = new Fl_Round_Button(242, 67, 128, 19, _("command PTT")); + btnPTT[3]->tooltip(_("use PTT data command")); btnPTT[3]->down_box(FL_DIAMOND_DOWN_BOX); btnPTT[3]->selection_color((Fl_Color)1); btnPTT[3]->callback((Fl_Callback*)cb_btnPTT2); btnPTT[3]->deactivate(); } // Fl_Round_Button* btnPTT[3] - { Fl_Output* o = txtXmlRigFilename = new Fl_Output(14, 94, 151, 22, "Xml File"); + { Fl_Output* o = txtXmlRigFilename = new Fl_Output(14, 94, 151, 22, _("Xml File")); txtXmlRigFilename->color(FL_LIGHT2); txtXmlRigFilename->align(FL_ALIGN_TOP_LEFT); o->value(fl_filename_name(progdefaults.XmlRigFilename.c_str())); } // Fl_Output* txtXmlRigFilename - { btnSelectRigXmlFile = new Fl_Button(166, 93, 54, 24, "Select"); - btnSelectRigXmlFile->tooltip("Select xml file for your rig"); + { btnSelectRigXmlFile = new Fl_Button(166, 93, 54, 24, _("Select")); + btnSelectRigXmlFile->tooltip(_("Select xml file for your rig")); btnSelectRigXmlFile->callback((Fl_Callback*)cb_btnSelectRigXmlFile); } // Fl_Button* btnSelectRigXmlFile - { Fl_Input_Choice* o = inpXmlRigDevice = new Fl_Input_Choice(77, 122, 144, 22, "Port"); - inpXmlRigDevice->tooltip("Select the serial port"); + { Fl_Input_Choice* o = inpXmlRigDevice = new Fl_Input_Choice(77, 122, 144, 22, _("Port")); + inpXmlRigDevice->tooltip(_("Select the serial port")); inpXmlRigDevice->callback((Fl_Callback*)cb_inpXmlRigDevice); o->value(progdefaults.XmlRigDevice.c_str()); } // Fl_Input_Choice* inpXmlRigDevice - { Fl_Choice* o = mnuXmlRigBaudrate = new Fl_Choice(122, 147, 99, 22, "Baud Rate"); - mnuXmlRigBaudrate->tooltip("Select the baud rate"); + { Fl_Choice* o = mnuXmlRigBaudrate = new Fl_Choice(122, 147, 99, 22, _("Baud Rate")); + mnuXmlRigBaudrate->tooltip(_("Select the baud rate")); mnuXmlRigBaudrate->down_box(FL_BORDER_BOX); mnuXmlRigBaudrate->callback((Fl_Callback*)cb_mnuXmlRigBaudrate); o->add(szBaudRates); o->value(progdefaults.XmlRigBaudrate); } // Fl_Choice* mnuXmlRigBaudrate - { Fl_Round_Button* o = btnRigCatRTSptt = new Fl_Round_Button(242, 90, 70, 15, "rts PTT"); - btnRigCatRTSptt->tooltip("toggle RTS for ptt"); + { Fl_Round_Button* o = btnRigCatRTSptt = new Fl_Round_Button(242, 90, 70, 15, _("rts PTT")); + btnRigCatRTSptt->tooltip(_("toggle RTS for ptt")); btnRigCatRTSptt->down_box(FL_ROUND_DOWN_BOX); btnRigCatRTSptt->callback((Fl_Callback*)cb_btnRigCatRTSptt); o->value(progdefaults.RigCatRTSptt); } // Fl_Round_Button* btnRigCatRTSptt - { Fl_Round_Button* o = btnRigCatDTRptt = new Fl_Round_Button(320, 90, 70, 15, "dtr PTT"); - btnRigCatDTRptt->tooltip("toggle DTR for ptt"); + { Fl_Round_Button* o = btnRigCatDTRptt = new Fl_Round_Button(320, 90, 70, 15, _("dtr PTT")); + btnRigCatDTRptt->tooltip(_("toggle DTR for ptt")); btnRigCatDTRptt->down_box(FL_ROUND_DOWN_BOX); btnRigCatDTRptt->callback((Fl_Callback*)cb_btnRigCatDTRptt); o->value(progdefaults.RigCatDTRptt); } // Fl_Round_Button* btnRigCatDTRptt - { Fl_Check_Button* o = btnRigCatRTSplus = new Fl_Check_Button(242, 110, 35, 15, "set RTS +12 v"); - btnRigCatRTSplus->tooltip("initial state of RTS"); + { Fl_Check_Button* o = btnRigCatRTSplus = new Fl_Check_Button(242, 110, 35, 15, _("set RTS +12 v")); + btnRigCatRTSplus->tooltip(_("initial state of RTS")); btnRigCatRTSplus->down_box(FL_DOWN_BOX); btnRigCatRTSplus->callback((Fl_Callback*)cb_btnRigCatRTSplus); o->value(progdefaults.RigCatRTSplus); } // Fl_Check_Button* btnRigCatRTSplus - { Fl_Check_Button* o = btnRigCatDTRplus = new Fl_Check_Button(242, 130, 35, 15, "set DTR +12 v"); - btnRigCatDTRplus->tooltip("initial state of DTR"); + { Fl_Check_Button* o = btnRigCatDTRplus = new Fl_Check_Button(242, 130, 35, 15, _("set DTR +12 v")); + btnRigCatDTRplus->tooltip(_("initial state of DTR")); btnRigCatDTRplus->down_box(FL_DOWN_BOX); btnRigCatDTRplus->callback((Fl_Callback*)cb_btnRigCatDTRplus); o->value(progdefaults.RigCatDTRplus); } // Fl_Check_Button* btnRigCatDTRplus - { Fl_Counter* o = cntRigCatRetries = new Fl_Counter(15, 188, 75, 21, "Retries"); - cntRigCatRetries->tooltip("# times to resend command before FAIL"); + { Fl_Counter* o = cntRigCatRetries = new Fl_Counter(15, 188, 75, 21, _("Retries")); + cntRigCatRetries->tooltip(_("# times to resend command before FAIL")); cntRigCatRetries->type(1); cntRigCatRetries->minimum(1); cntRigCatRetries->maximum(10); @@ -3072,8 +3067,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntRigCatRetries->align(FL_ALIGN_TOP); o->value(progdefaults.RigCatRetries); } // Fl_Counter* cntRigCatRetries - { Fl_Counter* o = cntRigCatTimeout = new Fl_Counter(102, 188, 75, 21, "Timeout"); - cntRigCatTimeout->tooltip("milliseconds between retries"); + { Fl_Counter* o = cntRigCatTimeout = new Fl_Counter(102, 188, 75, 21, _("Timeout")); + cntRigCatTimeout->tooltip(_("milliseconds between retries")); cntRigCatTimeout->type(1); cntRigCatTimeout->minimum(2); cntRigCatTimeout->maximum(200); @@ -3083,8 +3078,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntRigCatTimeout->align(FL_ALIGN_TOP); o->value(progdefaults.RigCatTimeout); } // Fl_Counter* cntRigCatTimeout - { Fl_Counter* o = cntRigCatWait = new Fl_Counter(190, 188, 75, 21, "Wait"); - cntRigCatWait->tooltip("Wait interval (msec) between commands"); + { Fl_Counter* o = cntRigCatWait = new Fl_Counter(190, 188, 75, 21, _("Wait")); + cntRigCatWait->tooltip(_("Wait interval (msec) between commands")); cntRigCatWait->type(1); cntRigCatWait->minimum(0); cntRigCatWait->maximum(100); @@ -3094,35 +3089,35 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntRigCatWait->align(FL_ALIGN_TOP); o->value(progdefaults.RigCatWait); } // Fl_Counter* cntRigCatWait - { btnInitRIGCAT = new Fl_Button(275, 186, 113, 24, "Initialize"); - btnInitRIGCAT->tooltip("Initialize RigCAT interface"); + { btnInitRIGCAT = new Fl_Button(275, 186, 113, 24, _("Initialize")); + btnInitRIGCAT->tooltip(_("Initialize RigCAT interface")); btnInitRIGCAT->callback((Fl_Callback*)cb_btnInitRIGCAT); } // Fl_Button* btnInitRIGCAT - { Fl_Check_Button* o = chkRigCatRTSCTSflow = new Fl_Check_Button(242, 150, 70, 15, "RTS/CTS flow ctl."); - chkRigCatRTSCTSflow->tooltip("RTS/CTS hardware flow control"); + { Fl_Check_Button* o = chkRigCatRTSCTSflow = new Fl_Check_Button(242, 150, 70, 15, _("RTS/CTS flow ctl.")); + chkRigCatRTSCTSflow->tooltip(_("RTS/CTS hardware flow control")); chkRigCatRTSCTSflow->down_box(FL_DOWN_BOX); chkRigCatRTSCTSflow->callback((Fl_Callback*)cb_chkRigCatRTSCTSflow); o->value(progdefaults.RigCatRTSCTSflow); } // Fl_Check_Button* chkRigCatRTSCTSflow o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 50, 400, 171, "Hamlib"); + { Fl_Group* o = new Fl_Group(0, 50, 400, 171, _("Hamlib")); o->hide(); - { chkUSEHAMLIB = new Fl_Check_Button(155, 65, 20, 20, "use Hamlib"); - chkUSEHAMLIB->tooltip("Select hamlib for rig control"); + { chkUSEHAMLIB = new Fl_Check_Button(155, 65, 20, 20, _("use Hamlib")); + chkUSEHAMLIB->tooltip(_("Select hamlib for rig control")); chkUSEHAMLIB->down_box(FL_DOWN_BOX); chkUSEHAMLIB->callback((Fl_Callback*)cb_chkUSEHAMLIB); chkUSEHAMLIB->align(FL_ALIGN_LEFT); } // Fl_Check_Button* chkUSEHAMLIB - { btnPTT[1] = new Fl_Round_Button(210, 65, 135, 20, "use Hamlib PTT"); - btnPTT[1]->tooltip("use PTT data command"); + { btnPTT[1] = new Fl_Round_Button(210, 65, 135, 20, _("use Hamlib PTT")); + btnPTT[1]->tooltip(_("use PTT data command")); btnPTT[1]->down_box(FL_DIAMOND_DOWN_BOX); btnPTT[1]->selection_color((Fl_Color)1); btnPTT[1]->callback((Fl_Callback*)cb_btnPTT3); btnPTT[1]->deactivate(); } // Fl_Round_Button* btnPTT[1] - { Fl_ComboBox* o = cboHamlibRig = new Fl_ComboBox(43, 90, 160, 22, "Rig:"); - cboHamlibRig->tooltip("Select hamlib rig"); + { Fl_ComboBox* o = cboHamlibRig = new Fl_ComboBox(43, 90, 160, 22, _("Rig:")); + cboHamlibRig->tooltip(_("Select hamlib rig")); cboHamlibRig->box(FL_DOWN_BOX); cboHamlibRig->color(FL_BACKGROUND2_COLOR); cboHamlibRig->selection_color(FL_BACKGROUND_COLOR); @@ -3135,24 +3130,24 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cboHamlibRig->when(FL_WHEN_RELEASE); o->readonly(); } // Fl_ComboBox* cboHamlibRig - { Fl_Input_Choice* o = inpRIGdev = new Fl_Input_Choice(59, 117, 144, 22, "Port:"); - inpRIGdev->tooltip("Select serial port"); + { Fl_Input_Choice* o = inpRIGdev = new Fl_Input_Choice(59, 117, 144, 22, _("Port:")); + inpRIGdev->tooltip(_("Select serial port")); inpRIGdev->callback((Fl_Callback*)cb_inpRIGdev); o->value(progdefaults.HamRigDevice.c_str()); } // Fl_Input_Choice* inpRIGdev - { Fl_Choice* o = mnuBaudRate = new Fl_Choice(104, 144, 99, 22, "Baud Rate:"); - mnuBaudRate->tooltip("Select baud rate"); + { Fl_Choice* o = mnuBaudRate = new Fl_Choice(104, 144, 99, 22, _("Baud Rate:")); + mnuBaudRate->tooltip(_("Select baud rate")); mnuBaudRate->down_box(FL_BORDER_BOX); mnuBaudRate->callback((Fl_Callback*)cb_mnuBaudRate); o->add(szBaudRates); o->value(progdefaults.HamRigBaudrate); } // Fl_Choice* mnuBaudRate - { btnInitHAMLIB = new Fl_Button(275, 186, 113, 24, "Initialize"); - btnInitHAMLIB->tooltip("Initialize Hamlib rig control"); + { btnInitHAMLIB = new Fl_Button(275, 186, 113, 24, _("Initialize")); + btnInitHAMLIB->tooltip(_("Initialize Hamlib rig control")); btnInitHAMLIB->callback((Fl_Callback*)cb_btnInitHAMLIB); } // Fl_Button* btnInitHAMLIB - { Fl_Counter* o = cntHamlibtRetries = new Fl_Counter(15, 189, 75, 21, "Retries"); - cntHamlibtRetries->tooltip("# times to resend command before FAIL"); + { Fl_Counter* o = cntHamlibtRetries = new Fl_Counter(15, 189, 75, 21, _("Retries")); + cntHamlibtRetries->tooltip(_("# times to resend command before FAIL")); cntHamlibtRetries->type(1); cntHamlibtRetries->minimum(1); cntHamlibtRetries->maximum(10); @@ -3162,8 +3157,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntHamlibtRetries->align(FL_ALIGN_TOP); o->value(progdefaults.HamlibRetries); } // Fl_Counter* cntHamlibtRetries - { Fl_Counter* o = cntHamlibTimeout = new Fl_Counter(102, 189, 75, 21, "Timeout"); - cntHamlibTimeout->tooltip("milliseconds between retries"); + { Fl_Counter* o = cntHamlibTimeout = new Fl_Counter(102, 189, 75, 21, _("Timeout")); + cntHamlibTimeout->tooltip(_("milliseconds between retries")); cntHamlibTimeout->type(1); cntHamlibTimeout->minimum(2); cntHamlibTimeout->maximum(200); @@ -3173,8 +3168,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntHamlibTimeout->align(FL_ALIGN_TOP); o->value(progdefaults.HamlibTimeout); } // Fl_Counter* cntHamlibTimeout - { Fl_Counter* o = cntHamlibWait = new Fl_Counter(190, 189, 75, 21, "Wait"); - cntHamlibWait->tooltip("Wait interval (msec) between commands"); + { Fl_Counter* o = cntHamlibWait = new Fl_Counter(190, 189, 75, 21, _("Wait")); + cntHamlibWait->tooltip(_("Wait interval (msec) between commands")); cntHamlibWait->type(1); cntHamlibWait->minimum(0); cntHamlibWait->maximum(100); @@ -3184,44 +3179,44 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 cntHamlibWait->align(FL_ALIGN_TOP); o->value(progdefaults.HamlibWait); } // Fl_Counter* cntHamlibWait - { Fl_Check_Button* o = btnHamlibDTRplus = new Fl_Check_Button(210, 93, 35, 15, "DTR +12"); - btnHamlibDTRplus->tooltip("initial state of DTR"); + { Fl_Check_Button* o = btnHamlibDTRplus = new Fl_Check_Button(210, 93, 35, 15, _("DTR +12")); + btnHamlibDTRplus->tooltip(_("initial state of DTR")); btnHamlibDTRplus->down_box(FL_DOWN_BOX); btnHamlibDTRplus->callback((Fl_Callback*)cb_btnHamlibDTRplus); o->value(progdefaults.HamlibDTRplus); } // Fl_Check_Button* btnHamlibDTRplus - { chkHamlibRTSplus = new Fl_Check_Button(300, 93, 35, 15, "RTS +12"); - chkHamlibRTSplus->tooltip("initial state of RTS"); + { chkHamlibRTSplus = new Fl_Check_Button(300, 93, 35, 15, _("RTS +12")); + chkHamlibRTSplus->tooltip(_("initial state of RTS")); chkHamlibRTSplus->down_box(FL_DOWN_BOX); chkHamlibRTSplus->callback((Fl_Callback*)cb_chkHamlibRTSplus); } // Fl_Check_Button* chkHamlibRTSplus - { Fl_Check_Button* o = chkHamlibRTSCTSflow = new Fl_Check_Button(210, 120, 70, 15, "RTS/CTS"); - chkHamlibRTSCTSflow->tooltip("RTS/CTS hardware flow control"); + { Fl_Check_Button* o = chkHamlibRTSCTSflow = new Fl_Check_Button(210, 120, 70, 15, _("RTS/CTS")); + chkHamlibRTSCTSflow->tooltip(_("RTS/CTS hardware flow control")); chkHamlibRTSCTSflow->down_box(FL_DOWN_BOX); chkHamlibRTSCTSflow->callback((Fl_Callback*)cb_chkHamlibRTSCTSflow); o->value(progdefaults.HamlibRTSCTSflow); } // Fl_Check_Button* chkHamlibRTSCTSflow - { Fl_Check_Button* o = chkHamlibXONXOFFflow = new Fl_Check_Button(300, 119, 70, 16, "XON/XOFF"); - chkHamlibXONXOFFflow->tooltip("XON/XOFF hardware flow control"); + { Fl_Check_Button* o = chkHamlibXONXOFFflow = new Fl_Check_Button(300, 119, 70, 16, _("XON/XOFF")); + chkHamlibXONXOFFflow->tooltip(_("XON/XOFF hardware flow control")); chkHamlibXONXOFFflow->down_box(FL_DOWN_BOX); chkHamlibXONXOFFflow->callback((Fl_Callback*)cb_chkHamlibXONXOFFflow); o->value(progdefaults.HamlibXONXOFFflow); } // Fl_Check_Button* chkHamlibXONXOFFflow { inpHamlibConfig = new Fl_Input(210, 144, 176, 22); - inpHamlibConfig->tooltip("Additional configuration\nof format: param=val ..."); + inpHamlibConfig->tooltip(_("Additional configuration\nof format: param=val ...")); inpHamlibConfig->callback((Fl_Callback*)cb_inpHamlibConfig); inpHamlibConfig->value(progdefaults.HamConfig.c_str()); } // Fl_Input* inpHamlibConfig o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 50, 400, 170, "MemMap"); - { chkUSEMEMMAP = new Fl_Check_Button(255, 135, 20, 20, "use Memmap"); - chkUSEMEMMAP->tooltip("Select Memory Mapping rig control (Kachina)"); + { Fl_Group* o = new Fl_Group(0, 50, 400, 170, _("MemMap")); + { chkUSEMEMMAP = new Fl_Check_Button(255, 135, 20, 20, _("use Memmap")); + chkUSEMEMMAP->tooltip(_("Select Memory Mapping rig control (Kachina)")); chkUSEMEMMAP->down_box(FL_DOWN_BOX); chkUSEMEMMAP->callback((Fl_Callback*)cb_chkUSEMEMMAP); chkUSEMEMMAP->align(FL_ALIGN_LEFT); } // Fl_Check_Button* chkUSEMEMMAP - { btnPTT[2] = new Fl_Round_Button(255, 155, 20, 20, "use Memmap PTT"); + { btnPTT[2] = new Fl_Round_Button(255, 155, 20, 20, _("use Memmap PTT")); btnPTT[2]->down_box(FL_DIAMOND_DOWN_BOX); btnPTT[2]->selection_color((Fl_Color)1); btnPTT[2]->callback((Fl_Callback*)cb_btnPTT4); @@ -3234,15 +3229,15 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->color(FL_LIGHT1); o->value("Control via Memory Mapped\nshared variables\nie: Kachina program"); } // Fl_Output* o - { btnInitMEMMAP = new Fl_Button(275, 186, 113, 24, "Initialize"); + { btnInitMEMMAP = new Fl_Button(275, 186, 113, 24, _("Initialize")); btnInitMEMMAP->callback((Fl_Callback*)cb_btnInitMEMMAP); } // Fl_Button* btnInitMEMMAP o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 50, 401, 170, "XmlRpc"); + { Fl_Group* o = new Fl_Group(0, 50, 401, 170, _("XmlRpc")); o->hide(); - { chkUSEXMLRPC = new Fl_Check_Button(281, 155, 20, 20, "use xmlrpc program"); - chkUSEXMLRPC->tooltip("experimental"); + { chkUSEXMLRPC = new Fl_Check_Button(281, 155, 20, 20, _("use xmlrpc program")); + chkUSEXMLRPC->tooltip(_("experimental")); chkUSEXMLRPC->down_box(FL_DOWN_BOX); chkUSEXMLRPC->callback((Fl_Callback*)cb_chkUSEXMLRPC); chkUSEXMLRPC->align(FL_ALIGN_LEFT); @@ -3253,7 +3248,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->color(FL_LIGHT1); o->value("Rig control via external\nprogram using xmlrpc\nremote calls."); } // Fl_Output* o - { btnInitXMLRPC = new Fl_Button(275, 186, 113, 24, "Initialize"); + { btnInitXMLRPC = new Fl_Button(275, 186, 113, 24, _("Initialize")); btnInitXMLRPC->callback((Fl_Callback*)cb_btnInitXMLRPC); } // Fl_Button* btnInitXMLRPC o->end(); @@ -3262,24 +3257,24 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Tabs* o tabRig->end(); } // Fl_Group* tabRig - { tabSoundCard = new Fl_Group(0, 25, 400, 195, "SndCrd"); + { tabSoundCard = new Fl_Group(0, 25, 400, 195, _("SndCrd")); tabSoundCard->color((Fl_Color)51); tabSoundCard->selection_color((Fl_Color)51); tabSoundCard->hide(); { tabsSoundCard = new Fl_Tabs(0, 25, 400, 195); tabsSoundCard->selection_color((Fl_Color)10); - { tabAudio = new Fl_Group(0, 50, 400, 170, "Audio devices"); + { tabAudio = new Fl_Group(0, 50, 400, 170, _("Audio devices")); tabAudio->color((Fl_Color)51); tabAudio->selection_color((Fl_Color)51); tabAudio->hide(); { AudioOSS = new Fl_Group(5, 58, 391, 35); AudioOSS->box(FL_ENGRAVED_FRAME); - { btnAudioIO[0] = new Fl_Round_Button(5, 63, 53, 25, "OSS"); + { btnAudioIO[0] = new Fl_Round_Button(5, 63, 53, 25, _("OSS")); btnAudioIO[0]->down_box(FL_DIAMOND_DOWN_BOX); btnAudioIO[0]->selection_color((Fl_Color)1); btnAudioIO[0]->callback((Fl_Callback*)cb_btnAudioIO); } // Fl_Round_Button* btnAudioIO[0] - { Fl_Input_Choice* o = menuOSSDev = new Fl_Input_Choice(280, 63, 110, 25, "Device"); + { Fl_Input_Choice* o = menuOSSDev = new Fl_Input_Choice(280, 63, 110, 25, _("Device")); menuOSSDev->callback((Fl_Callback*)cb_menuOSSDev); o->value(progdefaults.OSSdevice.c_str()); } // Fl_Input_Choice* menuOSSDev @@ -3287,16 +3282,16 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* AudioOSS { AudioPort = new Fl_Group(5, 95, 390, 61); AudioPort->box(FL_ENGRAVED_FRAME); - { btnAudioIO[1] = new Fl_Round_Button(5, 115, 95, 25, "PortAudio"); + { btnAudioIO[1] = new Fl_Round_Button(5, 115, 95, 25, _("PortAudio")); btnAudioIO[1]->down_box(FL_DIAMOND_DOWN_BOX); btnAudioIO[1]->selection_color((Fl_Color)1); btnAudioIO[1]->callback((Fl_Callback*)cb_btnAudioIO1); } // Fl_Round_Button* btnAudioIO[1] - { menuPortInDev = new Fl_Choice(165, 99, 225, 25, "Capture"); + { menuPortInDev = new Fl_Choice(165, 99, 225, 25, _("Capture")); menuPortInDev->down_box(FL_BORDER_BOX); menuPortInDev->callback((Fl_Callback*)cb_menuPortInDev); } // Fl_Choice* menuPortInDev - { menuPortOutDev = new Fl_Choice(165, 127, 225, 25, "Playback"); + { menuPortOutDev = new Fl_Choice(165, 127, 225, 25, _("Playback")); menuPortOutDev->down_box(FL_BORDER_BOX); menuPortOutDev->callback((Fl_Callback*)cb_menuPortOutDev); } // Fl_Choice* menuPortOutDev @@ -3304,13 +3299,13 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* AudioPort { AudioPulse = new Fl_Group(5, 158, 390, 32); AudioPulse->box(FL_ENGRAVED_FRAME); - { btnAudioIO[2] = new Fl_Round_Button(5, 159, 100, 30, "PulseAudio"); + { btnAudioIO[2] = new Fl_Round_Button(5, 159, 100, 30, _("PulseAudio")); btnAudioIO[2]->down_box(FL_DIAMOND_DOWN_BOX); btnAudioIO[2]->selection_color((Fl_Color)1); btnAudioIO[2]->callback((Fl_Callback*)cb_btnAudioIO2); } // Fl_Round_Button* btnAudioIO[2] - { Fl_Input* o = inpPulseServer = new Fl_Input(165, 161, 225, 25, "Server"); - inpPulseServer->tooltip("Leave this blank or refer to\nhttp://www.pulseaudio.org/wiki/ServerStrings"); + { Fl_Input* o = inpPulseServer = new Fl_Input(165, 161, 225, 25, _("Server")); + inpPulseServer->tooltip(_("Leave this blank or refer to\nhttp://www.pulseaudio.org/wiki/ServerStrings")); inpPulseServer->callback((Fl_Callback*)cb_inpPulseServer); o->value(progdefaults.PulseServer.c_str()); } // Fl_Input* inpPulseServer @@ -3318,7 +3313,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* AudioPulse { AudioNull = new Fl_Group(5, 192, 390, 25); AudioNull->box(FL_ENGRAVED_FRAME); - { btnAudioIO[3] = new Fl_Round_Button(5, 192, 100, 25, "File I/O only"); + { btnAudioIO[3] = new Fl_Round_Button(5, 192, 100, 25, _("File I/O only")); btnAudioIO[3]->down_box(FL_DIAMOND_DOWN_BOX); btnAudioIO[3]->selection_color((Fl_Color)1); btnAudioIO[3]->callback((Fl_Callback*)cb_btnAudioIO3); @@ -3327,11 +3322,11 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 } // Fl_Group* AudioNull tabAudio->end(); } // Fl_Group* tabAudio - { tabAudioOpt = new Fl_Group(0, 50, 400, 170, "Audio settings"); + { tabAudioOpt = new Fl_Group(0, 50, 400, 170, _("Audio settings")); tabAudioOpt->color((Fl_Color)51); tabAudioOpt->selection_color((Fl_Color)51); tabAudioOpt->hide(); - { Fl_Spinner* o = cntRxRateCorr = new Fl_Spinner(5, 160, 85, 25, "RX ppm"); + { Fl_Spinner* o = cntRxRateCorr = new Fl_Spinner(5, 160, 85, 25, _("RX ppm")); cntRxRateCorr->value(1); cntRxRateCorr->callback((Fl_Callback*)cb_cntRxRateCorr); cntRxRateCorr->align(FL_ALIGN_RIGHT); @@ -3339,7 +3334,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->minimum(-50000); o->maximum(50000); } // Fl_Spinner* cntRxRateCorr - { Fl_Spinner* o = cntTxRateCorr = new Fl_Spinner(5, 130, 85, 25, "TX ppm"); + { Fl_Spinner* o = cntTxRateCorr = new Fl_Spinner(5, 130, 85, 25, _("TX ppm")); cntTxRateCorr->value(1); cntTxRateCorr->callback((Fl_Callback*)cb_cntTxRateCorr); cntTxRateCorr->align(FL_ALIGN_RIGHT); @@ -3347,7 +3342,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->minimum(-50000); o->maximum(50000); } // Fl_Spinner* cntTxRateCorr - { Fl_Spinner* o = cntTxOffset = new Fl_Spinner(5, 190, 85, 25, "TX offset"); + { Fl_Spinner* o = cntTxOffset = new Fl_Spinner(5, 190, 85, 25, _("TX offset")); cntTxOffset->value(1); cntTxOffset->callback((Fl_Callback*)cb_cntTxOffset); cntTxOffset->align(FL_ALIGN_RIGHT); @@ -3356,12 +3351,12 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 o->minimum(-50); o->maximum(50); } // Fl_Spinner* cntTxOffset - { AudioSampleRate = new Fl_Group(4, 58, 392, 62, "Sample rate"); + { AudioSampleRate = new Fl_Group(4, 58, 392, 62, _("Sample rate")); AudioSampleRate->box(FL_ENGRAVED_FRAME); AudioSampleRate->align(FL_ALIGN_TOP_RIGHT|FL_ALIGN_INSIDE); - { Fl_Choice* o = menuOutSampleRate = new Fl_Choice(8, 91, 85, 25, "Playback"); - menuOutSampleRate->tooltip("Force a specific sample rate. Select \"Native\" if \"Auto\" does not work wel\ -l with your sound hardware."); + { Fl_Choice* o = menuOutSampleRate = new Fl_Choice(8, 91, 85, 25, _("Playback")); + menuOutSampleRate->tooltip(_("Force a specific sample rate. Select \"Native\" if \"Auto\" does not work wel\ +l with your sound hardware.")); menuOutSampleRate->down_box(FL_BORDER_BOX); menuOutSampleRate->callback((Fl_Callback*)cb_menuOutSampleRate); menuOutSampleRate->align(FL_ALIGN_RIGHT); @@ -3369,9 +3364,9 @@ l with your sound hardware."); //o->menu(sample_rate_menu); o->clear_changed(); } // Fl_Choice* menuOutSampleRate - { Fl_Choice* o = menuInSampleRate = new Fl_Choice(8, 62, 85, 25, "Capture"); - menuInSampleRate->tooltip("Force a specific sample rate. Select \"Native\" if \"Auto\" does not work wel\ -l with your sound hardware."); + { Fl_Choice* o = menuInSampleRate = new Fl_Choice(8, 62, 85, 25, _("Capture")); + menuInSampleRate->tooltip(_("Force a specific sample rate. Select \"Native\" if \"Auto\" does not work wel\ +l with your sound hardware.")); menuInSampleRate->down_box(FL_BORDER_BOX); menuInSampleRate->callback((Fl_Callback*)cb_menuInSampleRate); menuInSampleRate->align(FL_ALIGN_RIGHT); @@ -3379,7 +3374,7 @@ l with your sound hardware."); //o->menu(sample_rate_menu); o->clear_changed(); } // Fl_Choice* menuInSampleRate - { menuSampleConverter = new Fl_Choice(174, 91, 216, 25, "Converter"); + { menuSampleConverter = new Fl_Choice(174, 91, 216, 25, _("Converter")); menuSampleConverter->down_box(FL_BORDER_BOX); menuSampleConverter->callback((Fl_Callback*)cb_menuSampleConverter); menuSampleConverter->align(FL_ALIGN_TOP_LEFT); @@ -3388,31 +3383,30 @@ l with your sound hardware."); } // Fl_Group* AudioSampleRate tabAudioOpt->end(); } // Fl_Group* tabAudioOpt - { tabMixer = new Fl_Group(0, 50, 400, 170, "Mixer"); + { tabMixer = new Fl_Group(0, 50, 400, 170, _("Mixer")); tabMixer->color((Fl_Color)51); tabMixer->selection_color((Fl_Color)51); - { btnLineIn = new Fl_Light_Button(295, 64, 74, 22, "Line In"); + { btnLineIn = new Fl_Light_Button(295, 64, 74, 22, _("Line In")); btnLineIn->selection_color((Fl_Color)3); btnLineIn->callback((Fl_Callback*)cb_btnLineIn); } // Fl_Light_Button* btnLineIn - { btnMicIn = new Fl_Light_Button(295, 94, 74, 22, "Mic In"); + { btnMicIn = new Fl_Light_Button(295, 94, 74, 22, _("Mic In")); btnMicIn->callback((Fl_Callback*)cb_btnMicIn); } // Fl_Light_Button* btnMicIn - { valPCMvolume = new Fl_Value_Slider(19, 125, 340, 21, "PCM"); + { valPCMvolume = new Fl_Value_Slider(19, 125, 340, 21, _("PCM")); valPCMvolume->type(5); valPCMvolume->color((Fl_Color)26); valPCMvolume->selection_color((Fl_Color)1); - valPCMvolume->step(0.01); valPCMvolume->value(0.8); valPCMvolume->textsize(14); valPCMvolume->callback((Fl_Callback*)cb_valPCMvolume); valPCMvolume->align(FL_ALIGN_RIGHT); } // Fl_Value_Slider* valPCMvolume - { Fl_Input_Choice* o = menuMix = new Fl_Input_Choice(105, 90, 110, 25, "Device"); + { Fl_Input_Choice* o = menuMix = new Fl_Input_Choice(105, 90, 110, 25, _("Device")); menuMix->callback((Fl_Callback*)cb_menuMix); o->value(progdefaults.MXdevice.c_str()); } // Fl_Input_Choice* menuMix - { Fl_Check_Button* o = btnMixer = new Fl_Check_Button(55, 61, 125, 25, "Manage mixer"); + { Fl_Check_Button* o = btnMixer = new Fl_Check_Button(55, 61, 125, 25, _("Manage mixer")); btnMixer->down_box(FL_DOWN_BOX); btnMixer->callback((Fl_Callback*)cb_btnMixer); o->value(progdefaults.EnableMixer); @@ -3423,28 +3417,28 @@ l with your sound hardware."); } // Fl_Tabs* tabsSoundCard tabSoundCard->end(); } // Fl_Group* tabSoundCard - { tabUI = new Fl_Group(0, 25, 400, 195, "UI"); + { tabUI = new Fl_Group(0, 25, 400, 195, _("UI")); tabUI->hide(); { Fl_Tabs* o = new Fl_Tabs(0, 25, 400, 195); o->selection_color((Fl_Color)10); - { tabUserInterface = new Fl_Group(0, 50, 400, 170, "General"); + { tabUserInterface = new Fl_Group(0, 50, 400, 170, _("General")); { Fl_Group* o = new Fl_Group(5, 55, 390, 160); o->box(FL_ENGRAVED_FRAME); - { Fl_Check_Button* o = btnShowTooltips = new Fl_Check_Button(25, 80, 70, 15, "Show Tooltips"); - btnShowTooltips->tooltip("toggle tooltips on buttons, etc."); + { Fl_Check_Button* o = btnShowTooltips = new Fl_Check_Button(25, 80, 70, 15, _("Show Tooltips")); + btnShowTooltips->tooltip(_("toggle tooltips on buttons, etc.")); btnShowTooltips->down_box(FL_DOWN_BOX); btnShowTooltips->value(1); btnShowTooltips->callback((Fl_Callback*)cb_btnShowTooltips); o->value(progdefaults.tooltips); } // Fl_Check_Button* btnShowTooltips - { Fl_Check_Button* o = chkMenuIcons = new Fl_Check_Button(25, 105, 70, 15, "icons on menus"); - chkMenuIcons->tooltip("toggle menu icons on/off"); + { Fl_Check_Button* o = chkMenuIcons = new Fl_Check_Button(25, 105, 70, 15, _("icons on menus")); + chkMenuIcons->tooltip(_("toggle menu icons on/off")); chkMenuIcons->down_box(FL_DOWN_BOX); chkMenuIcons->callback((Fl_Callback*)cb_chkMenuIcons); o->value(progdefaults.menuicons); } // Fl_Check_Button* chkMenuIcons - { mnuScheme = new Fl_Choice(190, 75, 80, 25, "UI scheme"); - mnuScheme->tooltip("change application look and feel"); + { mnuScheme = new Fl_Choice(190, 75, 80, 25, _("UI scheme")); + mnuScheme->tooltip(_("change application look and feel")); mnuScheme->down_box(FL_BORDER_BOX); mnuScheme->callback((Fl_Callback*)cb_mnuScheme); mnuScheme->align(FL_ALIGN_RIGHT); @@ -3455,17 +3449,17 @@ l with your sound hardware."); } // Fl_Choice* mnuScheme o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(15, 125, 145, 80, "QSO logging"); + { Fl_Group* o = new Fl_Group(15, 125, 145, 80, _("QSO logging")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = btnNagMe = new Fl_Check_Button(25, 150, 80, 15, "Nag me"); - btnNagMe->tooltip("exit nag for unsaved log entries"); + { Fl_Check_Button* o = btnNagMe = new Fl_Check_Button(25, 150, 80, 15, _("Nag me")); + btnNagMe->tooltip(_("exit nag for unsaved log entries")); btnNagMe->down_box(FL_DOWN_BOX); btnNagMe->callback((Fl_Callback*)cb_btnNagMe); o->value(progdefaults.NagMe); } // Fl_Check_Button* btnNagMe - { Fl_Check_Button* o = btnClearOnSave = new Fl_Check_Button(25, 176, 125, 15, "Clear on Save"); - btnClearOnSave->tooltip("Clear log entries after saving or using macro "); + { Fl_Check_Button* o = btnClearOnSave = new Fl_Check_Button(25, 176, 125, 15, _("Clear on Save")); + btnClearOnSave->tooltip(_("Clear log entries after saving or using macro ")); btnClearOnSave->down_box(FL_DOWN_BOX); btnClearOnSave->callback((Fl_Callback*)cb_btnClearOnSave); o->value(progdefaults.ClearOnSave); @@ -3474,13 +3468,13 @@ l with your sound hardware."); } // Fl_Group* o tabUserInterface->end(); } // Fl_Group* tabUserInterface - { tabWfallRestart = new Fl_Group(0, 50, 400, 170, "Restart"); + { tabWfallRestart = new Fl_Group(0, 50, 400, 170, _("Restart")); tabWfallRestart->hide(); - { Fl_Group* o = new Fl_Group(5, 55, 390, 160, "These changes take effect on next program startup"); + { Fl_Group* o = new Fl_Group(5, 55, 390, 160, _("These changes take effect on next program startup")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE); - { Fl_Counter* o = cntrWfwidth = new Fl_Counter(25, 83, 95, 21, "Waterfall width in Hz"); - cntrWfwidth->tooltip("Wider ==> higher cpu usage"); + { Fl_Counter* o = cntrWfwidth = new Fl_Counter(25, 83, 95, 21, _("Waterfall width in Hz")); + cntrWfwidth->tooltip(_("Wider ==> higher cpu usage")); cntrWfwidth->type(1); cntrWfwidth->minimum(2400); cntrWfwidth->maximum(4000); @@ -3490,8 +3484,8 @@ l with your sound hardware."); cntrWfwidth->align(FL_ALIGN_RIGHT); o->value(progdefaults.wfwidth); } // Fl_Counter* cntrWfwidth - { Fl_Counter* o = cntrWfheight = new Fl_Counter(25, 109, 95, 21, "Waterfall height in pixels"); - cntrWfheight->tooltip("Taller ==> higher cpu usage"); + { Fl_Counter* o = cntrWfheight = new Fl_Counter(25, 109, 95, 21, _("Waterfall height in pixels")); + cntrWfheight->tooltip(_("Taller ==> higher cpu usage")); cntrWfheight->type(1); cntrWfheight->minimum(100); cntrWfheight->maximum(160); @@ -3501,20 +3495,20 @@ l with your sound hardware."); cntrWfheight->align(FL_ALIGN_RIGHT); o->value(progdefaults.wfheight); } // Fl_Counter* cntrWfheight - { Fl_Check_Button* o = btnDockedScope = new Fl_Check_Button(25, 136, 125, 20, "Docked scope"); - btnDockedScope->tooltip("Attach digiscope to right of waterfall"); + { Fl_Check_Button* o = btnDockedScope = new Fl_Check_Button(25, 136, 125, 20, _("Docked scope")); + btnDockedScope->tooltip(_("Attach digiscope to right of waterfall")); btnDockedScope->down_box(FL_DOWN_BOX); btnDockedScope->callback((Fl_Callback*)cb_btnDockedScope); o->value(progdefaults.docked_scope); } // Fl_Check_Button* btnDockedScope - { Fl_Check_Button* o = btnDockedRigControl = new Fl_Check_Button(25, 161, 160, 20, "Docked Rig Control"); - btnDockedRigControl->tooltip("Attach rig control to left of logbook"); + { Fl_Check_Button* o = btnDockedRigControl = new Fl_Check_Button(25, 161, 160, 20, _("Docked Rig Control")); + btnDockedRigControl->tooltip(_("Attach rig control to left of logbook")); btnDockedRigControl->down_box(FL_DOWN_BOX); btnDockedRigControl->value(1); btnDockedRigControl->callback((Fl_Callback*)cb_btnDockedRigControl); o->value(progdefaults.docked_rig_control); } // Fl_Check_Button* btnDockedRigControl - { Fl_Check_Button* o = btnCheckButtons = new Fl_Check_Button(25, 187, 125, 20, "Check button toggle for Sql && AFC"); + { Fl_Check_Button* o = btnCheckButtons = new Fl_Check_Button(25, 187, 125, 20, _("Check button toggle for Sql && AFC")); btnCheckButtons->down_box(FL_DOWN_BOX); btnCheckButtons->callback((Fl_Callback*)cb_btnCheckButtons); o->value(progdefaults.useCheckButtons); @@ -3527,16 +3521,16 @@ l with your sound hardware."); } // Fl_Tabs* o tabUI->end(); } // Fl_Group* tabUI - { tabWaterfall = new Fl_Group(0, 25, 405, 195, "Wfall"); + { tabWaterfall = new Fl_Group(0, 25, 405, 195, _("Wfall")); tabWaterfall->color((Fl_Color)51); tabWaterfall->selection_color((Fl_Color)51); tabWaterfall->hide(); { Fl_Tabs* o = new Fl_Tabs(0, 25, 405, 195); o->selection_color((Fl_Color)10); - { Fl_Group* o = new Fl_Group(0, 50, 400, 170, "Filters/Colors"); + { Fl_Group* o = new Fl_Group(0, 50, 400, 170, _("Filters/Colors")); { Fl_Group* o = new Fl_Group(10, 84, 385, 96); o->box(FL_ENGRAVED_FRAME); - { colorbox* o = WF_Palette = new colorbox(28, 107, 260, 24, "Palette:"); + { colorbox* o = WF_Palette = new colorbox(28, 107, 260, 24, _("Palette:")); WF_Palette->box(FL_DOWN_BOX); WF_Palette->color(FL_FOREGROUND_COLOR); WF_Palette->selection_color(FL_BACKGROUND_COLOR); @@ -3576,15 +3570,15 @@ l with your sound hardware."); { btnColor[8] = new Fl_Button(276, 139, 20, 24); btnColor[8]->callback((Fl_Callback*)cb_btnColor8); } // Fl_Button* btnColor[8] - { btnLoadPalette = new Fl_Button(314, 107, 70, 24, "Load"); + { btnLoadPalette = new Fl_Button(314, 107, 70, 24, _("Load")); btnLoadPalette->callback((Fl_Callback*)cb_btnLoadPalette); } // Fl_Button* btnLoadPalette - { btnSavePalette = new Fl_Button(314, 139, 70, 24, "Save"); + { btnSavePalette = new Fl_Button(314, 139, 70, 24, _("Save")); btnSavePalette->callback((Fl_Callback*)cb_btnSavePalette); } // Fl_Button* btnSavePalette o->end(); } // Fl_Group* o - { Fl_Counter* o = cntLowFreqCutoff = new Fl_Counter(125, 55, 70, 20, "Low Freq Cutoff"); + { Fl_Counter* o = cntLowFreqCutoff = new Fl_Counter(125, 55, 70, 20, _("Low Freq Cutoff")); cntLowFreqCutoff->type(1); cntLowFreqCutoff->minimum(0); cntLowFreqCutoff->maximum(500); @@ -3594,53 +3588,53 @@ l with your sound hardware."); cntLowFreqCutoff->align(FL_ALIGN_LEFT); o->value(progdefaults.LowFreqCutoff); } // Fl_Counter* cntLowFreqCutoff - { Fl_Check_Button* o = btnWFaveraging = new Fl_Check_Button(231, 57, 114, 15, "wf averaging"); + { Fl_Check_Button* o = btnWFaveraging = new Fl_Check_Button(231, 57, 114, 15, _("wf averaging")); btnWFaveraging->down_box(FL_DOWN_BOX); btnWFaveraging->callback((Fl_Callback*)cb_btnWFaveraging); o->value(progdefaults.WFaveraging); } // Fl_Check_Button* btnWFaveraging { Fl_Group* o = new Fl_Group(10, 180, 385, 30); o->box(FL_ENGRAVED_FRAME); - { btnWaterfallFont = new Fl_Button(20, 185, 120, 20, "Waterfall Font"); + { btnWaterfallFont = new Fl_Button(20, 185, 120, 20, _("Waterfall Font")); btnWaterfallFont->callback((Fl_Callback*)cb_btnWaterfallFont); } // Fl_Button* btnWaterfallFont o->end(); } // Fl_Group* o o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 49, 400, 170, "FFT Processing"); + { Fl_Group* o = new Fl_Group(0, 49, 400, 170, _("FFT Processing")); o->hide(); - { Fl_Group* o = new Fl_Group(5, 58, 390, 42, "FFT Prefilter"); + { Fl_Group* o = new Fl_Group(5, 58, 390, 42, _("FFT Prefilter")); o->box(FL_ENGRAVED_BOX); o->color((Fl_Color)51); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = btnBlackman = new Fl_Check_Button(11, 78, 90, 15, "Blackman"); + { Fl_Check_Button* o = btnBlackman = new Fl_Check_Button(11, 78, 90, 15, _("Blackman")); btnBlackman->down_box(FL_DOWN_BOX); btnBlackman->callback((Fl_Callback*)cb_btnBlackman); if(progdefaults.wfPreFilter==1)o->value(1);else o->value(0); } // Fl_Check_Button* btnBlackman - { Fl_Check_Button* o = btnHamming = new Fl_Check_Button(108, 78, 90, 15, "Hamming"); + { Fl_Check_Button* o = btnHamming = new Fl_Check_Button(108, 78, 90, 15, _("Hamming")); btnHamming->down_box(FL_DOWN_BOX); btnHamming->callback((Fl_Callback*)cb_btnHamming); if(progdefaults.wfPreFilter==2)o->value(1);else o->value(0); } // Fl_Check_Button* btnHamming - { Fl_Check_Button* o = btnHanning = new Fl_Check_Button(206, 78, 90, 15, "Hanning"); + { Fl_Check_Button* o = btnHanning = new Fl_Check_Button(206, 78, 90, 15, _("Hanning")); btnHanning->down_box(FL_DOWN_BOX); btnHanning->callback((Fl_Callback*)cb_btnHanning); if(progdefaults.wfPreFilter==3)o->value(1);else o->value(0); } // Fl_Check_Button* btnHanning - { Fl_Check_Button* o = btnTriangular = new Fl_Check_Button(304, 78, 90, 15, "Triangular"); + { Fl_Check_Button* o = btnTriangular = new Fl_Check_Button(304, 78, 90, 15, _("Triangular")); btnTriangular->down_box(FL_DOWN_BOX); btnTriangular->callback((Fl_Callback*)cb_btnTriangular); if(progdefaults.wfPreFilter==4)o->value(1);else o->value(0); } // Fl_Check_Button* btnTriangular o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(5, 105, 390, 50, "FFT Latency"); + { Fl_Group* o = new Fl_Group(5, 105, 390, 50, _("FFT Latency")); o->box(FL_ENGRAVED_FRAME); o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Counter* o = valLatency = new Fl_Counter(225, 119, 63, 21, "Scan merging:"); - valLatency->tooltip("1 = none"); + { Fl_Counter* o = valLatency = new Fl_Counter(225, 119, 63, 21, _("Scan merging:")); + valLatency->tooltip(_("1 = none")); valLatency->type(1); valLatency->minimum(1); valLatency->maximum(8); @@ -3654,54 +3648,54 @@ l with your sound hardware."); } // Fl_Group* o o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(5, 54, 393, 166, "Misc"); + { Fl_Group* o = new Fl_Group(5, 54, 393, 166, _("Misc")); o->hide(); { Fl_Group* o = new Fl_Group(8, 60, 390, 158); o->box(FL_ENGRAVED_FRAME); - { Fl_Check_Button* o = btnUseCursorLines = new Fl_Check_Button(58, 70, 100, 20, "Cursor BW"); + { Fl_Check_Button* o = btnUseCursorLines = new Fl_Check_Button(58, 70, 100, 20, _("Cursor BW")); btnUseCursorLines->down_box(FL_DOWN_BOX); btnUseCursorLines->callback((Fl_Callback*)cb_btnUseCursorLines); o->value(progdefaults.UseCursorLines); } // Fl_Check_Button* btnUseCursorLines - { Fl_Check_Button* o = btnUseBWTracks = new Fl_Check_Button(58, 123, 100, 20, "BW Tracks"); + { Fl_Check_Button* o = btnUseBWTracks = new Fl_Check_Button(58, 123, 100, 20, _("BW Tracks")); btnUseBWTracks->down_box(FL_DOWN_BOX); btnUseBWTracks->callback((Fl_Callback*)cb_btnUseBWTracks); o->value(progdefaults.UseBWTracks); } // Fl_Check_Button* btnUseBWTracks - { Fl_Check_Button* o = btnUseCursorCenterLine = new Fl_Check_Button(58, 96, 121, 21, "Cursor Center"); + { Fl_Check_Button* o = btnUseCursorCenterLine = new Fl_Check_Button(58, 96, 121, 21, _("Cursor Center")); btnUseCursorCenterLine->down_box(FL_DOWN_BOX); btnUseCursorCenterLine->callback((Fl_Callback*)cb_btnUseCursorCenterLine); o->value(progdefaults.UseCursorCenterLine); } // Fl_Check_Button* btnUseCursorCenterLine { Fl_Button* o = btnCursorBWcolor = new Fl_Button(25, 70, 19, 20); - btnCursorBWcolor->tooltip("Select Cursor BW color"); + btnCursorBWcolor->tooltip(_("Select Cursor BW color")); btnCursorBWcolor->color((Fl_Color)3); btnCursorBWcolor->callback((Fl_Callback*)cb_btnCursorBWcolor); o->color(fl_rgb_color(progdefaults.cursorLineRGBI.R,progdefaults.cursorLineRGBI.G,progdefaults.cursorLineRGBI.B)); } // Fl_Button* btnCursorBWcolor { Fl_Button* o = btnCursorCenterLineColor = new Fl_Button(25, 97, 19, 20); - btnCursorCenterLineColor->tooltip("Select Center Line color"); + btnCursorCenterLineColor->tooltip(_("Select Center Line color")); btnCursorCenterLineColor->color(FL_BACKGROUND2_COLOR); btnCursorCenterLineColor->callback((Fl_Callback*)cb_btnCursorCenterLineColor); o->color(fl_rgb_color(progdefaults.cursorCenterRGBI.R,progdefaults.cursorCenterRGBI.G,progdefaults.cursorCenterRGBI.B)); } // Fl_Button* btnCursorCenterLineColor { Fl_Button* o = btnBwTracksColor = new Fl_Button(25, 124, 19, 20); - btnBwTracksColor->tooltip("Select BW tracks color"); + btnBwTracksColor->tooltip(_("Select BW tracks color")); btnBwTracksColor->color((Fl_Color)1); btnBwTracksColor->callback((Fl_Callback*)cb_btnBwTracksColor); o->color(fl_rgb_color(progdefaults.bwTrackRGBI.R,progdefaults.bwTrackRGBI.G,progdefaults.bwTrackRGBI.B)); } // Fl_Button* btnBwTracksColor - { Fl_Check_Button* o = chkShowAudioScale = new Fl_Check_Button(195, 70, 185, 20, "show Audio Scale"); + { Fl_Check_Button* o = chkShowAudioScale = new Fl_Check_Button(195, 70, 185, 20, _("show Audio Scale")); chkShowAudioScale->down_box(FL_DOWN_BOX); chkShowAudioScale->callback((Fl_Callback*)cb_chkShowAudioScale); o->value(progdefaults.wf_audioscale); } // Fl_Check_Button* chkShowAudioScale - { Fl_Check_Button* o = btnViewXmtSignal = new Fl_Check_Button(26, 150, 135, 20, "View Tx Signal"); + { Fl_Check_Button* o = btnViewXmtSignal = new Fl_Check_Button(26, 150, 135, 20, _("View Tx Signal")); btnViewXmtSignal->down_box(FL_DOWN_BOX); btnViewXmtSignal->callback((Fl_Callback*)cb_btnViewXmtSignal); o->value(progdefaults.viewXmtSignal); } // Fl_Check_Button* btnViewXmtSignal - { Fl_Value_Slider* o = valTxMonitorLevel = new Fl_Value_Slider(25, 189, 340, 21, "Tx Audio Monitor Level"); + { Fl_Value_Slider* o = valTxMonitorLevel = new Fl_Value_Slider(25, 189, 340, 21, _("Tx Audio Monitor Level")); valTxMonitorLevel->type(5); valTxMonitorLevel->color((Fl_Color)26); valTxMonitorLevel->selection_color((Fl_Color)1); @@ -3716,18 +3710,18 @@ l with your sound hardware."); } // Fl_Group* o o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(0, 50, 405, 166, "Mouse"); + { Fl_Group* o = new Fl_Group(0, 50, 405, 166, _("Mouse")); o->hide(); { Fl_Group* o = new Fl_Group(5, 56, 390, 158); o->box(FL_ENGRAVED_FRAME); - { Fl_Check_Button* o = btnWaterfallHistoryDefault = new Fl_Check_Button(15, 66, 276, 20, "Left/Right click always replays history"); - btnWaterfallHistoryDefault->tooltip("Disabled - Ctrl-Lft click plays history"); + { Fl_Check_Button* o = btnWaterfallHistoryDefault = new Fl_Check_Button(15, 66, 276, 20, _("Left/Right click always replays history")); + btnWaterfallHistoryDefault->tooltip(_("Disabled - Ctrl-Lft click plays history")); btnWaterfallHistoryDefault->down_box(FL_DOWN_BOX); btnWaterfallHistoryDefault->callback((Fl_Callback*)cb_btnWaterfallHistoryDefault); o->value(progdefaults.WaterfallHistoryDefault); } // Fl_Check_Button* btnWaterfallHistoryDefault - { Fl_Check_Button* o = btnWaterfallQSY = new Fl_Check_Button(15, 96, 225, 20, "Dragging changes frequency"); - btnWaterfallQSY->tooltip("Drag mouse on waterfall scale to change frequency"); + { Fl_Check_Button* o = btnWaterfallQSY = new Fl_Check_Button(15, 96, 225, 20, _("Dragging changes frequency")); + btnWaterfallQSY->tooltip(_("Drag mouse on waterfall scale to change frequency")); btnWaterfallQSY->down_box(FL_DOWN_BOX); btnWaterfallQSY->callback((Fl_Callback*)cb_btnWaterfallQSY); o->value(progdefaults.WaterfallQSY); @@ -3736,16 +3730,16 @@ l with your sound hardware."); inpWaterfallClickText->callback((Fl_Callback*)cb_inpWaterfallClickText); inpWaterfallClickText->align(FL_ALIGN_RIGHT); } // Fl_Input* inpWaterfallClickText - { Fl_Check_Button* o = btnWaterfallClickInsert = new Fl_Check_Button(15, 134, 172, 20, "Insert text on left click"); - btnWaterfallClickInsert->tooltip("Default - double click on waterfall inserts text"); + { Fl_Check_Button* o = btnWaterfallClickInsert = new Fl_Check_Button(15, 134, 172, 20, _("Insert text on left click")); + btnWaterfallClickInsert->tooltip(_("Default - double click on waterfall inserts text")); btnWaterfallClickInsert->down_box(FL_DOWN_BOX); btnWaterfallClickInsert->callback((Fl_Callback*)cb_btnWaterfallClickInsert); o->value(progdefaults.WaterfallClickInsert); } // Fl_Check_Button* btnWaterfallClickInsert o->end(); } // Fl_Group* o - { mnuWaterfallWheelAction = new Fl_Choice(15, 176, 150, 22, "Wheel action"); - mnuWaterfallWheelAction->tooltip("Select how Mouse wheel behaves on waterfall"); + { mnuWaterfallWheelAction = new Fl_Choice(15, 176, 150, 22, _("Wheel action")); + mnuWaterfallWheelAction->tooltip(_("Select how Mouse wheel behaves on waterfall")); mnuWaterfallWheelAction->down_box(FL_BORDER_BOX); mnuWaterfallWheelAction->callback((Fl_Callback*)cb_mnuWaterfallWheelAction); mnuWaterfallWheelAction->align(FL_ALIGN_RIGHT); @@ -3758,10 +3752,10 @@ l with your sound hardware."); } // Fl_Group* tabWaterfall tabsConfigure->end(); } // Fl_Tabs* tabsConfigure - { btnSaveConfig = new Fl_Button(145, 226, 113, 24, "Save Config"); + { btnSaveConfig = new Fl_Button(145, 226, 123, 24, _("Save Config")); btnSaveConfig->callback((Fl_Callback*)cb_btnSaveConfig); } // Fl_Button* btnSaveConfig - { btnCloseConfig = new Fl_Return_Button(280, 226, 113, 24, "Close"); + { btnCloseConfig = new Fl_Return_Button(280, 226, 113, 24, _("Close")); btnCloseConfig->callback((Fl_Callback*)cb_btnCloseConfig); } // Fl_Return_Button* btnCloseConfig o->end(); diff --git a/src/dialogs/confdialog.fl b/src/dialogs/confdialog.fl index 8232bdc6..2fa1c23d 100644 --- a/src/dialogs/confdialog.fl +++ b/src/dialogs/confdialog.fl @@ -1,5 +1,8 @@ # data file for the Fltk User Interface Designer (fluid) version 1.0108 +i18n_type 1 +i18n_include "gettext.h" +i18n_function _ header_name {.h} code_name {.cxx} decl {\#include } {} @@ -2293,7 +2296,7 @@ progdefaults.changed = true;} open Fl_Button btnSaveConfig { label {Save Config} callback {progdefaults.saveDefaults();} - xywh {145 226 113 24} + xywh {145 226 123 24} } Fl_Return_Button btnCloseConfig { label Close diff --git a/src/dialogs/fl_digi.cxx b/src/dialogs/fl_digi.cxx index b6945ab9..66d0a520 100644 --- a/src/dialogs/fl_digi.cxx +++ b/src/dialogs/fl_digi.cxx @@ -37,6 +37,7 @@ #include #include +#include "gettext.h" #include "fl_digi.h" #include @@ -885,8 +886,8 @@ void cb_mnuVisitURL(Fl_Widget*, void* arg) LOG_PERROR("Could not execute a web browser"); exit(EXIT_FAILURE); case -1: - fl_alert("Could not run a web browser:\n%s\n\n" - "Open this URL manually:\n%s", + fl_alert(_("Could not run a web browser:\n%s\n\n" + "Open this URL manually:\n%s"), strerror(errno), url); } #else @@ -898,7 +899,7 @@ void cb_mnuVisitURL(Fl_Widget*, void* arg) // int and compare it with the value 32 or one of the error // codes below." (Error codes omitted to preserve sanity). if ((int)ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL) <= 32) - fl_alert("Could not open url:\n%s\n", url); + fl_alert(_("Could not open url:\n%s\n"), url); #endif restoreFocus(); @@ -948,7 +949,7 @@ void cb_mnuCheckUpdate(Fl_Widget* w, void*) string reply; w->window()->cursor(FL_CURSOR_WAIT); - put_status("Checking for updates..."); + put_status(_("Checking for updates...")); for (size_t i = 0; i < sizeof(sites)/sizeof(*sites); i++) { // fetch .url, grep for .re Fl::check(); reply.clear(); @@ -965,12 +966,12 @@ void cb_mnuCheckUpdate(Fl_Widget* w, void*) latest = sites[1].version > sites[0].version ? &sites[1] : &sites[0]; if (sites[0].version == 0 && sites[1].version == 0) { - fl_message("Could not check for updates:\n%s", reply.c_str()); + fl_message(_("Could not check for updates:\n%s"), reply.c_str()); return; } if (latest->version > ver2int(PACKAGE_VERSION)) { - switch (fl_choice("Version %s is available at\n\n%s\n\nWhat would you like to do?", - "Close", "Visit URL", "Copy URL", + switch (fl_choice(_("Version %s is available at\n\n%s\n\nWhat would you like to do?"), + _("Close"), _("Visit URL"), _("Copy URL"), latest->version_str.c_str(), latest->url)) { case 1: cb_mnuVisitURL(NULL, (void*)latest->url); @@ -982,7 +983,7 @@ void cb_mnuCheckUpdate(Fl_Widget* w, void*) } } else - fl_message("You are running the latest version"); + fl_message(_("You are running the latest version")); } void cb_mnuAboutURL(Fl_Widget*, void*) @@ -1048,14 +1049,14 @@ void cb_mnuDebug(Fl_Widget*, void*) #ifndef NDEBUG void cb_mnuFun(Fl_Widget*, void*) { - fl_message("Sunspot creation underway!"); + fl_message(_("Sunspot creation underway!")); } #endif void cb_mnuAudioInfo(Fl_Widget*, void*) { if (progdefaults.btnAudioIOis != SND_IDX_PORT) { - fl_alert("Audio device information is only available for the PortAudio backend"); + fl_alert(_("Audio device information is only available for the PortAudio backend")); return; } @@ -1234,7 +1235,7 @@ void qsoClear_cb(Fl_Widget *b, void *) { // showsizes(); if (progdefaults.NagMe) { - if (oktoclear || fl_choice("Clear log fields?", "Cancel", "OK", NULL) == 1) { + if (oktoclear || fl_choice(_("Clear log fields?"), _("Cancel"), _("OK"), NULL) == 1) { clearQSO(); oktoclear = true; } @@ -1369,7 +1370,7 @@ bool clean_exit(void) { arq_close(); if (progdefaults.changed) { - switch (fl_choice("Save changed configuration before exiting?", "Cancel", "Save", "Don't save")) { + switch (fl_choice(_("Save changed configuration before exiting?"), _("Cancel"), _("Save"), _("Don't save"))) { case 0: return false; case 1: @@ -1380,7 +1381,7 @@ bool clean_exit(void) { } } if (!oktoclear && progdefaults.NagMe) { - switch (fl_choice("Save log before exiting?", "Cancel", "Save", "Don't save")) { + switch (fl_choice(_("Save log before exiting?"), _("Cancel"), _("Save"), _("Don't save"))) { case 0: return false; case 1: @@ -1391,7 +1392,7 @@ bool clean_exit(void) { } } if (macros.changed) { - switch (fl_choice("Save changed macros before exiting?", "Cancel", "Save", "Don't save")) { + switch (fl_choice(_("Save changed macros before exiting?"), _("Cancel"), _("Save"), _("Don't save"))) { case 0: return false; case 1: @@ -1448,22 +1449,22 @@ bool clean_exit(void) { } Fl_Menu_Item menu_[] = { -{"&Files", 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, -{ make_icon_label("Open macros...", file_open_icon), 0, (Fl_Callback*)cb_mnuOpenMacro, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Save macros...", save_as_icon), 0, (Fl_Callback*)cb_mnuSaveMacro, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Show config", folder_open_icon), 0, cb_ShowConfig, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, +{_("&Files"), 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, +{ make_icon_label(_("Open macros..."), file_open_icon), 0, (Fl_Callback*)cb_mnuOpenMacro, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Save macros..."), save_as_icon), 0, (Fl_Callback*)cb_mnuSaveMacro, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Show config"), folder_open_icon), 0, cb_ShowConfig, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, //{"Log File", 0, (Fl_Callback*)cb_mnuLogFile, 0, FL_MENU_DIVIDER | FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, -{"Log File", 0, 0, 0, FL_MENU_DIVIDER | FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, +{_("Log File"), 0, 0, 0, FL_MENU_DIVIDER | FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, #if USE_SNDFILE -{ make_icon_label("Audio"), 0, 0, 0, FL_MENU_DIVIDER | FL_SUBMENU, _FL_MULTI_LABEL, 0, 14, 0}, -{"Rx capture", 0, (Fl_Callback*)cb_mnuCapture, 0, FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, -{"Tx generate", 0, (Fl_Callback*)cb_mnuGenerate, 0, FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, -{"Playback", 0, (Fl_Callback*)cb_mnuPlayback, 0, FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, +{ make_icon_label(_("Audio")), 0, 0, 0, FL_MENU_DIVIDER | FL_SUBMENU, _FL_MULTI_LABEL, 0, 14, 0}, +{_("Rx capture"), 0, (Fl_Callback*)cb_mnuCapture, 0, FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, +{_("Tx generate"), 0, (Fl_Callback*)cb_mnuGenerate, 0, FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, +{_("Playback"), 0, (Fl_Callback*)cb_mnuPlayback, 0, FL_MENU_TOGGLE, FL_NORMAL_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0}, #endif -{ make_icon_label("E&xit", log_out_icon), 0, (Fl_Callback*)cb_E, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("E&xit"), log_out_icon), 0, (Fl_Callback*)cb_E, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0}, -{"Op &Mode", 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, +{_("Op &Mode"), 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, { mode_info[MODE_CW].name, 0, cb_init_mode, (void *)MODE_CW, 0, FL_NORMAL_LABEL, 0, 14, 0}, @@ -1560,43 +1561,43 @@ Fl_Menu_Item menu_[] = { { mode_info[MODE_ANALYSIS].name, 0, cb_init_mode, (void *)MODE_ANALYSIS, 0, FL_NORMAL_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0}, -{"Configure", 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, -{ make_icon_label("Operator", system_users_icon), 0, (Fl_Callback*)cb_mnuConfigOperator, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Colors && Fonts", preferences_desktop_font_icon), 0, (Fl_Callback*)cb_mnuConfigFonts, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("User Interface"), 0, (Fl_Callback*)cb_mnuUI, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Waterfall", waterfall_icon), 0, (Fl_Callback*)cb_mnuConfigWaterfall, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Modems", emblems_system_icon), 0, (Fl_Callback*)cb_mnuConfigModems, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Rig Control", multimedia_player_icon), 0, (Fl_Callback*)cb_mnuConfigRigCtrl, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Sound Card", audio_card_icon), 0, (Fl_Callback*)cb_mnuConfigSoundCard, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("IDs"), 0, (Fl_Callback*)cb_mnuConfigID, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Misc"), 0, (Fl_Callback*)cb_mnuConfigMisc, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("QRZ", net_icon), 0, (Fl_Callback*)cb_mnuConfigQRZ, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Save Config", save_icon), 0, (Fl_Callback*)cb_mnuSaveConfig, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{_("Configure"), 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, +{ make_icon_label(_("Operator"), system_users_icon), 0, (Fl_Callback*)cb_mnuConfigOperator, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Colors && Fonts"), preferences_desktop_font_icon), 0, (Fl_Callback*)cb_mnuConfigFonts, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("User Interface")), 0, (Fl_Callback*)cb_mnuUI, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Waterfall"), waterfall_icon), 0, (Fl_Callback*)cb_mnuConfigWaterfall, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Modems"), emblems_system_icon), 0, (Fl_Callback*)cb_mnuConfigModems, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Rig Control"), multimedia_player_icon), 0, (Fl_Callback*)cb_mnuConfigRigCtrl, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Sound Card"), audio_card_icon), 0, (Fl_Callback*)cb_mnuConfigSoundCard, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("IDs")), 0, (Fl_Callback*)cb_mnuConfigID, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Misc")), 0, (Fl_Callback*)cb_mnuConfigMisc, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("QRZ"), net_icon), 0, (Fl_Callback*)cb_mnuConfigQRZ, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Save Config"), save_icon), 0, (Fl_Callback*)cb_mnuSaveConfig, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0}, -{"View", 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, -{ make_icon_label("Digiscope", utilities_system_monitor_icon), 0, (Fl_Callback*)cb_mnuDigiscope, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("MFSK Image", image_icon), 0, (Fl_Callback*)cb_mnuPicViewer, 0, FL_MENU_INACTIVE, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("PSK Browser"), 0, (Fl_Callback*)cb_mnuViewer, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Rig Control", multimedia_player_icon), 0, (Fl_Callback*)cb_mnuRig, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{_("View"), 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, +{ make_icon_label(_("Digiscope"), utilities_system_monitor_icon), 0, (Fl_Callback*)cb_mnuDigiscope, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("MFSK Image"), image_icon), 0, (Fl_Callback*)cb_mnuPicViewer, 0, FL_MENU_INACTIVE, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("PSK Browser")), 0, (Fl_Callback*)cb_mnuViewer, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Rig Control"), multimedia_player_icon), 0, (Fl_Callback*)cb_mnuRig, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0}, {" ", 0, 0, 0, FL_MENU_INACTIVE, FL_NORMAL_LABEL, 0, 14, 0}, -{"Help", 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, +{_("Help"), 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0}, #ifndef NDEBUG // settle the gmfsk vs fldigi argument once and for all -{ make_icon_label("Create sunspots", weather_clear_icon), 0, cb_mnuFun, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Create sunspots"), weather_clear_icon), 0, cb_mnuFun, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, #endif -{ make_icon_label("Beginners' Guide", start_here_icon), 0, cb_mnuBeginnersURL, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Online documentation...", help_browser_icon), 0, cb_mnuVisitURL, (void *)PACKAGE_DOCS, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Fldigi web site...", net_icon), 0, cb_mnuVisitURL, (void *)PACKAGE_HOME, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Reception reports...", pskr_icon), 0, cb_mnuVisitPSKRep, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Command line options", utilities_terminal_icon), 0, cb_mnuCmdLineHelp, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Audio device info", audio_card_icon), 0, cb_mnuAudioInfo, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Build info", executable_icon), 0, cb_mnuBuildInfo, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Event log", dialog_information_icon), 0, cb_mnuDebug, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("Check for updates...", system_software_update_icon), 0, cb_mnuCheckUpdate, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, -{ make_icon_label("About", help_about_icon), 0, cb_mnuAboutURL, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Beginners' Guide"), start_here_icon), 0, cb_mnuBeginnersURL, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Online documentation..."), help_browser_icon), 0, cb_mnuVisitURL, (void *)PACKAGE_DOCS, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Fldigi web site..."), net_icon), 0, cb_mnuVisitURL, (void *)PACKAGE_HOME, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Reception reports..."), pskr_icon), 0, cb_mnuVisitPSKRep, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Command line options"), utilities_terminal_icon), 0, cb_mnuCmdLineHelp, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Audio device info"), audio_card_icon), 0, cb_mnuAudioInfo, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Build info"), executable_icon), 0, cb_mnuBuildInfo, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Event log"), dialog_information_icon), 0, cb_mnuDebug, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("Check for updates..."), system_software_update_icon), 0, cb_mnuCheckUpdate, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, +{ make_icon_label(_("About"), help_about_icon), 0, cb_mnuAboutURL, 0, 0, _FL_MULTI_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0}, {" ", 0, 0, 0, FL_MENU_INACTIVE, FL_NORMAL_LABEL, 0, 14, 0}, @@ -1627,7 +1628,7 @@ Fl_Menu_Item *getMenuItem(const char *caption, Fl_Menu_Item* submenu) void activate_rig_menu_item(bool b) { - Fl_Menu_Item *rig = getMenuItem("Rig Control", getMenuItem("View")); + Fl_Menu_Item *rig = getMenuItem(_("Rig Control"), getMenuItem(_("View"))); if (!rig) return; if (b) { @@ -1644,7 +1645,7 @@ void activate_rig_menu_item(bool b) void activate_mfsk_image_item(bool b) { - Fl_Menu_Item *mfsk_item = getMenuItem("MFSK Image"); + Fl_Menu_Item *mfsk_item = getMenuItem(_("MFSK Image")); if (mfsk_item) set_active(mfsk_item, b); } @@ -1738,7 +1739,7 @@ string main_window_title; void update_main_title() { main_window_title = PACKAGE_TARNAME " - "; - main_window_title += (progdefaults.myCall.empty() ? "NO CALLSIGN SET" : progdefaults.myCall.c_str()); + main_window_title += (progdefaults.myCall.empty() ? _("NO CALLSIGN SET") : progdefaults.myCall.c_str()); if (fl_digi_main != NULL) fl_digi_main->label(main_window_title.c_str()); } @@ -1753,7 +1754,7 @@ void showOpBrowserView(Fl_Widget *, void *) RigViewerFrame->show(); qso_opPICK->image(closepixmap); qso_opPICK->redraw_label(); - qso_opPICK->tooltip("Close List"); + qso_opPICK->tooltip(_("Close List")); } void CloseQsoView() @@ -1764,7 +1765,7 @@ void CloseQsoView() QsoButtonFrame->show(); qso_opPICK->image(addrbookpixmap); qso_opPICK->redraw_label(); - qso_opPICK->tooltip("Open List"); + qso_opPICK->tooltip(_("Open List")); } void cb_qso_btnSelFreq(Fl_Widget *, void *) @@ -1927,7 +1928,7 @@ void create_fl_digi_main() { txtRigName = new Fl_Box(2, Hmenu, FREQWIDTH, Hqsoframe - FREQHEIGHT); txtRigName->align(FL_ALIGN_CENTER); txtRigName->color(FL_BACKGROUND_COLOR); - txtRigName->label("No rig specified"); + txtRigName->label(_("No rig specified")); qsoFreqDisp = new cFreqControl(2, Hmenu + Hqsoframe - FREQHEIGHT, FREQWIDTH, FREQHEIGHT, ""); @@ -1988,7 +1989,7 @@ void create_fl_digi_main() { closepixmap = new Fl_Pixmap(close_icon); qso_opPICK->image(addrbookpixmap); qso_opPICK->callback(showOpBrowserView, 0); - qso_opPICK->tooltip("Open List"); + qso_opPICK->tooltip(_("Open List")); RigControlFrame->resizable(NULL); RigControlFrame->end(); @@ -2003,32 +2004,32 @@ void create_fl_digi_main() { rightof(RigControlFrame), Hmenu + 1, 20, Hnotes - 2); qso_btnSelFreq->image(new Fl_Pixmap(left_arrow_icon)); - qso_btnSelFreq->tooltip("Select"); + qso_btnSelFreq->tooltip(_("Select")); qso_btnSelFreq->callback((Fl_Callback*)cb_qso_btnSelFreq); qso_btnAddFreq = new Fl_Button( rightof(qso_btnSelFreq) + pad, Hmenu + 1, 20, Hnotes - 2); qso_btnAddFreq->image(new Fl_Pixmap(plus_icon)); - qso_btnAddFreq->tooltip("Add current frequency"); + qso_btnAddFreq->tooltip(_("Add current frequency")); qso_btnAddFreq->callback((Fl_Callback*)cb_qso_btnAddFreq); qso_btnClearList = new Fl_Button( rightof(RigControlFrame), Hmenu + qh + 1, 20, Hnotes - 2); qso_btnClearList->image(new Fl_Pixmap(trash_icon)); - qso_btnClearList->tooltip("Clear list"); + qso_btnClearList->tooltip(_("Clear list")); qso_btnClearList->callback((Fl_Callback*)cb_qso_btnClearList); qso_btnDelFreq = new Fl_Button( rightof(qso_btnClearList) + pad, Hmenu + qh + 1, 20, Hnotes - 2); qso_btnDelFreq->image(new Fl_Pixmap(minus_icon)); - qso_btnDelFreq->tooltip("Delete from list"); + qso_btnDelFreq->tooltip(_("Delete from list")); qso_btnDelFreq->callback((Fl_Callback*)cb_qso_btnDelFreq); qso_opBrowser = new Fl_Browser(rightof(qso_btnDelFreq) + pad, Hmenu + 1, opB_w, BV_h - 1 ); - qso_opBrowser->tooltip("Select operating parameters"); + qso_opBrowser->tooltip(_("Select operating parameters")); qso_opBrowser->callback((Fl_Callback*)cb_qso_opBrowser); qso_opBrowser->type(2); qso_opBrowser->box(FL_DOWN_BOX); @@ -2047,19 +2048,19 @@ void create_fl_digi_main() { BTNWIDTH - 2*pad, qh - pad); btnQRZ->image(new Fl_Pixmap(net_icon)); btnQRZ->callback(cb_QRZ, 0); - btnQRZ->tooltip("QRZ"); + btnQRZ->tooltip(_("QRZ")); qsoClear = new Fl_Button(rightof(RigControlFrame) + pad, Hmenu + qh + 1, BTNWIDTH - 2*pad, qh - pad); qsoClear->image(new Fl_Pixmap(edit_clear_icon)); qsoClear->callback(qsoClear_cb, 0); - qsoClear->tooltip("Clear"); + qsoClear->tooltip(_("Clear")); qsoSave = new Fl_Button(rightof(RigControlFrame) + pad, Hmenu + Hqsoframe + 1, BTNWIDTH - 2*pad, qh - pad); qsoSave->image(new Fl_Pixmap(save_icon)); qsoSave->callback(qsoSave_cb, 0); - qsoSave->tooltip("Save"); + qsoSave->tooltip(_("Save")); QsoButtonFrame->end(); } else { @@ -2069,19 +2070,19 @@ void create_fl_digi_main() { BTNWIDTH - 2*pad, qh - pad); btnQRZ->image(new Fl_Pixmap(net_icon)); btnQRZ->callback(cb_QRZ, 0); - btnQRZ->tooltip("QRZ"); + btnQRZ->tooltip(_("QRZ")); qsoClear = new Fl_Button(pad, Hmenu + qh + 1, BTNWIDTH - 2*pad, qh - pad); qsoClear->image(new Fl_Pixmap(edit_clear_icon)); qsoClear->callback(qsoClear_cb, 0); - qsoClear->tooltip("Clear"); + qsoClear->tooltip(_("Clear")); qsoSave = new Fl_Button(pad, Hmenu + Hqsoframe + 1, BTNWIDTH - 2*pad, qh - pad); qsoSave->image(new Fl_Pixmap(save_icon)); qsoSave->callback(qsoSave_cb, 0); - qsoSave->tooltip("Save"); + qsoSave->tooltip(_("Save")); QsoButtonFrame->end(); } @@ -2094,20 +2095,20 @@ void create_fl_digi_main() { QsoInfoFrame1 = new Fl_Group(x_qsoframe, Hmenu, wf1, Hqsoframe + Hnotes); // QsoInfoFrame1->box(FL_BORDER_BOX); - inpFreq = new Fl_Input(x_qsoframe + pad, y2, w_inpFreq, qh - pad, "QSO Freq"); + inpFreq = new Fl_Input(x_qsoframe + pad, y2, w_inpFreq, qh - pad, _("QSO Freq")); inpFreq->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); - inpTime = new Fl_Input(rightof(inpFreq) + pad, y2, w_inpTime, qh - pad, "Time"); + inpTime = new Fl_Input(rightof(inpFreq) + pad, y2, w_inpTime, qh - pad, _("Time")); inpTime->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); qsoTime = new Fl_Button(rightof(inpTime), y2, w_qsoTime, qh - pad); qsoTime->image(new Fl_Pixmap(time_icon)); qsoTime->callback(qsoTime_cb, 0); - inpCall = new Fl_Input(rightof(qsoTime) + pad, y2, w_inpCall, qh - pad, "Call"); + inpCall = new Fl_Input(rightof(qsoTime) + pad, y2, w_inpCall, qh - pad, _("Call")); inpCall->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); - inpName = new Fl_Input(rightof(inpCall) + pad, y2, w_inpName, qh - pad, "Name"); + inpName = new Fl_Input(rightof(inpCall) + pad, y2, w_inpName, qh - pad, _("Name")); inpName->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); inpRstIn = new Fl_Input(rightof(inpName) + pad, y2, w_inpRstIn, qh - pad, "In"); @@ -2154,7 +2155,7 @@ void create_fl_digi_main() { // QsoInfoFrame2->box(FL_BORDER_BOX); inpNotes = new Fl_Multiline_Input(x_qsoframe + wf1 + pad, y2, - WNOM - rightof(QsoInfoFrame1) - 2*pad, qh + Hnotes - pad, "Notes"); + WNOM - rightof(QsoInfoFrame1) - 2*pad, qh + Hnotes - pad, _("Notes")); inpNotes->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); Fl_Group::current()->resizable(inpNotes); @@ -2273,7 +2274,7 @@ void create_fl_digi_main() { } btnMacro[i] = new Fl_Button(xpos, Y+2, Wbtn, Hmacros - 4, macros.name[i].c_str()); btnMacro[i]->callback(macro_cb, (void *)i); - btnMacro[i]->tooltip("Left Click - execute\nRight Click - edit"); + btnMacro[i]->tooltip(_("Left Click - execute\nRight Click - edit")); colorize_macro(i); xpos += Wbtn; } @@ -2282,7 +2283,7 @@ void create_fl_digi_main() { bx->color(FL_BLACK); btnAltMacros = new Fl_Button(WNOM-32, Y+2, 30, Hmacros - 4, "1"); btnAltMacros->callback(altmacro_cb, 0); - btnAltMacros->tooltip("Change macro set"); + btnAltMacros->tooltip(_("Change macro set")); Y += Hmacros; @@ -2332,7 +2333,7 @@ void create_fl_digi_main() { ""); pgrsSquelch->color(FL_BACKGROUND2_COLOR, FL_DARK_GREEN); pgrsSquelch->type(Progress::VERTICAL); - pgrsSquelch->tooltip("Detected signal level"); + pgrsSquelch->tooltip(_("Detected signal level")); sldrSquelch = new Fl_Slider( rightof(pgrsSquelch), Y + 4, @@ -2344,7 +2345,7 @@ void create_fl_digi_main() { sldrSquelch->value(progStatus.sldrSquelchValue); sldrSquelch->callback((Fl_Callback*)cb_sldrSquelch); sldrSquelch->color(FL_INACTIVE_COLOR); - sldrSquelch->tooltip("Squelch level"); + sldrSquelch->tooltip(_("Squelch level")); Fl_Group::current()->resizable(wf); wfpack->end(); @@ -2359,7 +2360,7 @@ void create_fl_digi_main() { MODEstatus->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); MODEstatus->callback(status_cb, (void *)0); MODEstatus->when(FL_WHEN_CHANGED); - MODEstatus->tooltip("Left clk - change mode\nRight clk - Modem Tab"); + MODEstatus->tooltip(_("Left clk - change mode\nRight clk - Modem Tab")); Status1 = new Fl_Box(rightof(MODEstatus), Hmenu+Hrcvtxt+Hxmttxt+Hwfall, Ws2n, Hstatus, ""); Status1->box(FL_DOWN_BOX); @@ -2417,10 +2418,10 @@ void create_fl_digi_main() { } btn_afconoff->callback(afconoff_cb, 0); btn_afconoff->value(1); - btn_afconoff->tooltip("AFC on/off"); + btn_afconoff->tooltip(_("AFC on/off")); btn_sqlonoff->callback(sqlonoff_cb, 0); btn_sqlonoff->value(1); - btn_sqlonoff->tooltip("SQL on/off"); + btn_sqlonoff->tooltip(_("SQL on/off")); Fl_Group::current()->resizable(StatusBar); @@ -2439,7 +2440,7 @@ void create_fl_digi_main() { fl_digi_main->xclass(PACKAGE_NAME); fl_digi_main->size_range(WMIN, HMIN);//WNOM, (HNOM < 400 ? HNOM : 400)); - scopeview = new Fl_Double_Window(0,0,140,140, "Scope"); + scopeview = new Fl_Double_Window(0,0,140,140, _("Scope")); scopeview->xclass(PACKAGE_NAME); digiscope = new Digiscope (0, 0, 140, 140); scopeview->resizable(digiscope); @@ -2593,7 +2594,7 @@ void put_rx_char(unsigned int data) if (Maillogfile) Maillogfile->log_to_file(cLogfile::LOG_RX, s); - if (!mnuLogging) mnuLogging = getMenuItem("Log File"); + if (!mnuLogging) mnuLogging = getMenuItem(_("Log File")); if (mnuLogging) if (mnuLogging->value()) logfile->log_to_file(cLogfile::LOG_RX, s); @@ -2793,7 +2794,7 @@ void put_echo_char(unsigned int data) if (Maillogfile) Maillogfile->log_to_file(cLogfile::LOG_TX, s); - if (!mnuLogging) mnuLogging = getMenuItem("Log File"); // should only be called once + if (!mnuLogging) mnuLogging = getMenuItem(_("Log File")); // should only be called once if (mnuLogging) if (mnuLogging->value()) logfile->log_to_file(cLogfile::LOG_TX, s); diff --git a/src/include/gettext.h b/src/include/gettext.h new file mode 100644 index 00000000..cb6f794a --- /dev/null +++ b/src/include/gettext.h @@ -0,0 +1,286 @@ +/* Convenience header for conditional use of GNU . + Copyright (C) 1995-1998, 2000-2002, 2004-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +#include "config.h" + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include + +/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by + the gettext() and ngettext() macros. This is an alternative to calling + textdomain(), and is useful for libraries. */ +# ifdef DEFAULT_TEXT_DOMAIN +# undef gettext +# define gettext(Msgid) \ + dgettext (DEFAULT_TEXT_DOMAIN, Msgid) +# undef ngettext +# define ngettext(Msgid1, Msgid2, N) \ + dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) +# endif + +#else + +/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which + chokes if dcgettext is defined as a macro. So include it now, to make + later inclusions of a NOP. We don't include + as well because people using "gettext.h" will not include , + and also including would fail on SunOS 4, whereas + is OK. */ +#if defined(__sun) +# include +#endif + +/* Many header files from the libstdc++ coming with g++ 3.3 or newer include + , which chokes if dcgettext is defined as a macro. So include + it now, to make later inclusions of a NOP. */ +#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) +# include +# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H +# include +# endif +#endif + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# define gettext(Msgid) ((const char *) (Msgid)) +# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) +# define dcgettext(Domainname, Msgid, Category) \ + ((void) (Category), dgettext (Domainname, Msgid)) +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 \ + ? ((void) (Msgid2), (const char *) (Msgid1)) \ + : ((void) (Msgid1), (const char *) (Msgid2))) +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N)) +# define textdomain(Domainname) ((const char *) (Domainname)) +# define bindtextdomain(Domainname, Dirname) \ + ((void) (Domainname), (const char *) (Dirname)) +# define bind_textdomain_codeset(Domainname, Codeset) \ + ((void) (Domainname), (const char *) (Codeset)) + +#endif + +/* A pseudo function call that serves as a marker for the automated + extraction of messages, but does not call gettext(). The run-time + translation is done at a different place in the code. + The argument, String, should be a literal string. Concatenated strings + and other string expressions won't work. + The macro's expansion is not parenthesized, so that it is suitable as + initializer for static 'char[]' or 'const char[]' variables. */ +#define gettext_noop(String) String + +/* The separator between msgctxt and msgid in a .mo file. */ +#define GETTEXT_CONTEXT_GLUE "\004" + +/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a + MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be + short and rarely need to change. + The letter 'p' stands for 'particular' or 'special'. */ +#ifdef DEFAULT_TEXT_DOMAIN +# define pgettext(Msgctxt, Msgid) \ + pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#else +# define pgettext(Msgctxt, Msgid) \ + pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#endif +#define dpgettext(Domainname, Msgctxt, Msgid) \ + pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ + pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) +#ifdef DEFAULT_TEXT_DOMAIN +# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#else +# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#endif +#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ + npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static const char * +pgettext_aux (const char *domain, + const char *msg_ctxt_id, const char *msgid, + int category) +{ + const char *translation = dcgettext (domain, msg_ctxt_id, category); + if (translation == msg_ctxt_id) + return msgid; + else + return translation; +} + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static const char * +npgettext_aux (const char *domain, + const char *msg_ctxt_id, const char *msgid, + const char *msgid_plural, unsigned long int n, + int category) +{ + const char *translation = + dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); + if (translation == msg_ctxt_id || translation == msgid_plural) + return (n == 1 ? msgid : msgid_plural); + else + return translation; +} + +/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID + can be arbitrary expressions. But for string literals these macros are + less efficient than those above. */ + +#include + +#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \ + (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \ + /* || __STDC_VERSION__ >= 199901L */ ) + +#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS +#include +#endif + +#define pgettext_expr(Msgctxt, Msgid) \ + dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) +#define dpgettext_expr(Domainname, Msgctxt, Msgid) \ + dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static const char * +dcpgettext_expr (const char *domain, + const char *msgctxt, const char *msgid, + int category) +{ + size_t msgctxt_len = strlen (msgctxt) + 1; + size_t msgid_len = strlen (msgid) + 1; + const char *translation; +#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS + char msg_ctxt_id[msgctxt_len + msgid_len]; +#else + char buf[1024]; + char *msg_ctxt_id = + (msgctxt_len + msgid_len <= sizeof (buf) + ? buf + : (char *) malloc (msgctxt_len + msgid_len)); + if (msg_ctxt_id != NULL) +#endif + { + memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); + msg_ctxt_id[msgctxt_len - 1] = '\004'; + memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); + translation = dcgettext (domain, msg_ctxt_id, category); +#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS + if (msg_ctxt_id != buf) + free (msg_ctxt_id); +#endif + if (translation != msg_ctxt_id) + return translation; + } + return msgid; +} + +#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ + dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) +#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ + dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static const char * +dcnpgettext_expr (const char *domain, + const char *msgctxt, const char *msgid, + const char *msgid_plural, unsigned long int n, + int category) +{ + size_t msgctxt_len = strlen (msgctxt) + 1; + size_t msgid_len = strlen (msgid) + 1; + const char *translation; +#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS + char msg_ctxt_id[msgctxt_len + msgid_len]; +#else + char buf[1024]; + char *msg_ctxt_id = + (msgctxt_len + msgid_len <= sizeof (buf) + ? buf + : (char *) malloc (msgctxt_len + msgid_len)); + if (msg_ctxt_id != NULL) +#endif + { + memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); + msg_ctxt_id[msgctxt_len - 1] = '\004'; + memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); + translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); +#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS + if (msg_ctxt_id != buf) + free (msg_ctxt_id); +#endif + if (!(translation == msg_ctxt_id || translation == msgid_plural)) + return translation; + } + return (n == 1 ? msgid : msgid_plural); +} + +#if ENABLE_NLS + #define _(String) gettext (String) + #define N_(String) gettext_noop (String) +#else + #define _(String) (String) + #define N_(String) String +#endif + +#if ENABLE_NLS +int setup_nls(void); +static const int nls_init_ = setup_nls(); +#endif + +#endif /* _LIBGETTEXT_H */ diff --git a/src/main.cxx b/src/main.cxx index 2bd8a2fd..739df118 100644 --- a/src/main.cxx +++ b/src/main.cxx @@ -46,6 +46,7 @@ #include #include +#include "gettext.h" #include "main.h" #include "waterfall.h" #include "fft.h" @@ -142,7 +143,9 @@ int main(int argc, char ** argv) set_terminate(diediedie); setup_signal_handlers(); +#ifndef ENABLE_NLS setlocale(LC_TIME, ""); +#endif #ifdef __CYGWIN__ fl_filename_expand(szHomedir, 119, "$USERPROFILE/fldigi.files/"); @@ -168,7 +171,7 @@ int main(int argc, char ** argv) DIR *dir = opendir(HomeDir.c_str()); if (dir == 0) { if ( mkdir(HomeDir.c_str(), 0777) == -1) { - cerr << "Could not make directory " << HomeDir << ": " + cerr << _("Could not make directory ") << HomeDir << ": " << strerror(errno) << endl; exit(EXIT_FAILURE); } @@ -180,7 +183,7 @@ int main(int argc, char ** argv) try { debug::start(string(HomeDir).append("status_log.txt").c_str()); time_t t = time(NULL); - LOG(debug::QUIET_LEVEL, "%s log started on %s", PACKAGE_STRING, ctime(&t)); + LOG(debug::QUIET_LEVEL, _("%s log started on %s"), PACKAGE_STRING, ctime(&t)); } catch (const char* error) { cerr << error << '\n'; @@ -627,12 +630,12 @@ void generate_version_text(void) { ostringstream s; s << PACKAGE_STRING << '\n' - << "Copyright (c) 2008 " << PACKAGE_AUTHORS << '\n' - << "License GPLv2+: GNU GPL version 2 or later \n" - << "This is free software: you are free to change and redistribute it.\n" - << "There is NO WARRANTY, to the extent permitted by law.\n"; + << "Copyright (c) 2008 " PACKAGE_AUTHORS "\n" << + _("License GPLv2+: GNU GPL version 2 or later \n" + "This is free software: you are free to change and redistribute it.\n" + "There is NO WARRANTY, to the extent permitted by law.\n"); - s << "\nSystem: "; + s << _("\nSystem: "); struct utsname u; if (uname(&u) != -1) { s << u.sysname << ' ' << u.nodename @@ -791,3 +794,37 @@ static void setup_signal_handlers(void) sigaddset(&action.sa_mask, SIGUSR2); pthread_sigmask(SIG_BLOCK, &action.sa_mask, NULL); } + +#ifdef ENABLE_NLS +int setup_nls(void) +{ + static int nls_set_up = 0; + if (nls_set_up) + return nls_set_up; + + setlocale (LC_MESSAGES, ""); + setlocale (LC_CTYPE, ""); + setlocale (LC_TIME, ""); + // setting LC_NUMERIC might break the config read/write routines + + const char* ldir; + char buf[4096]; + if (!(ldir = getenv("FLDIGI_LOCALE_DIR"))) { + if (getcwd(buf, sizeof(buf) - strlen("/locale") - 1)) { + strcpy(buf + strlen(buf), "/locale"); + struct stat s; + if (stat(buf, &s) != -1 && S_ISDIR(s.st_mode)) + ldir = buf; + else + ldir = LOCALEDIR; + } + } + + bindtextdomain(PACKAGE, ldir); + /* fltk-1.1.x only knows about Latin-1 */ + bind_textdomain_codeset(PACKAGE, "ISO-8859-1"); + textdomain(PACKAGE); + + return nls_set_up = 1; +} +#endif diff --git a/src/mfsk/mfsk-pic.cxx b/src/mfsk/mfsk-pic.cxx index 8e137a07..c2880c72 100644 --- a/src/mfsk/mfsk-pic.cxx +++ b/src/mfsk/mfsk-pic.cxx @@ -24,6 +24,8 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // ---------------------------------------------------------------------------- +#include "gettext.h" + Fl_Double_Window *picRxWin = (Fl_Double_Window *)0; picture *picRx = (picture *)0; @@ -89,7 +91,7 @@ void cb_picRxSave( Fl_Widget *w, void *) ; int fsel; - const char *fn = FSEL::saveas("Save image as:", ffilter, dfname, &fsel); + const char *fn = FSEL::saveas(_("Save image as:"), ffilter, dfname, &fsel); if (!fn) return; // selected filter determines format switch (fsel) { @@ -115,15 +117,15 @@ void createRxViewer() picRxWin->begin(); picRx = new picture(2, 2, 136, 104); - btnpicRxSave = new Fl_Button(5, 140 - 30, 60, 24,"Save..."); + btnpicRxSave = new Fl_Button(5, 140 - 30, 60, 24,_("Save...")); btnpicRxSave->callback(cb_picRxSave, 0); btnpicRxSave->hide(); #if !(USE_LIBPNG || USE_LIBJPEG) btnpicRxSave->deactivate(); #endif - btnpicRxAbort = new Fl_Button(70, 140 - 30, 60, 24, "Abort"); + btnpicRxAbort = new Fl_Button(70, 140 - 30, 60, 24, _("Abort")); btnpicRxAbort->callback(cb_picRxAbort, 0); - btnpicRxClose = new Fl_Button(135, 140 - 30, 60, 24, "Hide"); + btnpicRxClose = new Fl_Button(135, 140 - 30, 60, 24, _("Hide")); btnpicRxClose->callback(cb_picRxClose, 0); picRxWin->end(); @@ -208,11 +210,11 @@ void load_image(const char *n) { picTxWin->redraw(); picTx->video(xmtimg, W * H * 3); if (print_time_left( (W * H * 3) * 0.000125 * serviceme->TXspp, - txclr_tooltip, sizeof(txclr_tooltip), "Time needed: ") > 0) + txclr_tooltip, sizeof(txclr_tooltip), _("Time needed: ")) > 0) btnpicTxSendColor->tooltip(txclr_tooltip); btnpicTxSendColor->activate(); if (print_time_left( (W * H) * 0.000125 * serviceme->TXspp, - txgry_tooltip, sizeof(txgry_tooltip), "Time needed: ") > 0) + txgry_tooltip, sizeof(txgry_tooltip), _("Time needed: ")) > 0) btnpicTxSendGrey->tooltip(txgry_tooltip); btnpicTxSendGrey->activate(); FL_UNLOCK_D(); @@ -241,7 +243,7 @@ void updateTxPic(unsigned char data) void cb_picTxLoad(Fl_Widget *, void *) { const char *fn = - FSEL::select("Load image file", "Portable Network Graphics\t*.png\n" + FSEL::select(_("Load image file"), "Portable Network Graphics\t*.png\n" "Independent JPEG Group\t*.{jpg,jif,jpeg,jpe}\n" "Graphics Interchange Format\t*.gif"); if (!fn) return; @@ -364,10 +366,10 @@ void cb_picTxSPP( Fl_Widget *w, void *) if (TxImg == 0) return; if (TxImg->w() > 0 && TxImg->h() > 0) { if (print_time_left( (TxImg->w() * TxImg->h() * 3) * 0.000125 * serviceme->TXspp, - txclr_tooltip, sizeof(txclr_tooltip), "Time needed: ") > 0) + txclr_tooltip, sizeof(txclr_tooltip), _("Time needed: ")) > 0) btnpicTxSendColor->tooltip(txclr_tooltip); if (print_time_left( (TxImg->w() * TxImg->h()) * 0.000125 * serviceme->TXspp, - txgry_tooltip, sizeof(txgry_tooltip), "Time needed: ") > 0) + txgry_tooltip, sizeof(txgry_tooltip), _("Time needed: ")) > 0) btnpicTxSendGrey->tooltip(txgry_tooltip); } } @@ -375,18 +377,18 @@ void cb_picTxSPP( Fl_Widget *w, void *) void createTxViewer() { FL_LOCK_D(); - picTxWin = new Fl_Double_Window(290, 180, "Send image"); + picTxWin = new Fl_Double_Window(290, 180, _("Send image")); picTxWin->xclass(PACKAGE_NAME); picTxWin->begin(); picTx = new picture (2, 2, 286, 150); picTx->hide(); picTxBox = new picbox(picTxWin->x(), picTxWin->y(), picTxWin->w(), picTxWin->h(), - "Load or drop an image file\nSupported types: PNG, JPEG, BMP"); + _("Load or drop an image file\nSupported types: PNG, JPEG, BMP")); picTxBox->labelfont(FL_HELVETICA_ITALIC); btnpicTxSPP = new Fl_Button(5, 180 - 30, 40, 24, "X1"); - btnpicTxSPP->tooltip("Transfer speed, X1-normal"); + btnpicTxSPP->tooltip(_("Transfer speed, X1-normal")); btnpicTxSPP->callback( cb_picTxSPP, 0); btnpicTxSendColor = new Fl_Button(45, 180 - 30, 60, 24, "XmtClr"); @@ -398,10 +400,10 @@ void createTxViewer() btnpicTxSendAbort = new Fl_Button(84, 180 - 30, 122, 24, "Abort Xmt"); btnpicTxSendAbort->callback(cb_picTxSendAbort, 0); - btnpicTxLoad = new Fl_Button(165, 180 - 30, 60, 24, "Load"); + btnpicTxLoad = new Fl_Button(165, 180 - 30, 60, 24, _("Load")); btnpicTxLoad->callback(cb_picTxLoad, 0); - btnpicTxClose = new Fl_Button(225, 180 - 30, 60, 24, "Close"); + btnpicTxClose = new Fl_Button(225, 180 - 30, 60, 24, _("Close")); btnpicTxClose->callback(cb_picTxClose, 0); btnpicTxSendAbort->hide(); diff --git a/src/misc/debug.cxx b/src/misc/debug.cxx index fcff18fb..d0f3f516 100644 --- a/src/misc/debug.cxx +++ b/src/misc/debug.cxx @@ -37,6 +37,7 @@ #include "FTextView.h" #include "debug.h" +#include "gettext.h" using namespace std; @@ -54,7 +55,7 @@ static FTextLog* text; debug* debug::inst = 0; debug::level_e debug::level = debug::WARN_LEVEL; -const char* prefix[] = { "Quiet", "Error", "Warning", "Info", "Debug" }; +const char* prefix[] = { _("Quiet"), _("Error"), _("Warning"), _("Info"), _("Debug") }; static void slider_cb(Fl_Widget* w, void*); @@ -64,12 +65,12 @@ void debug::start(const char* filename) return; inst = new debug(filename); - window = new Fl_Double_Window(512, 256, "Event log"); + window = new Fl_Double_Window(512, 256, _("Event log")); window->xclass(PACKAGE_TARNAME); int pad = 2; Fl_Slider* slider = new Fl_Slider(pad, pad, 128, 20, prefix[level]); - slider->tooltip("Change log level"); + slider->tooltip(_("Change log level")); slider->align(FL_ALIGN_RIGHT); slider->type(FL_HOR_NICE_SLIDER); slider->range(0.0, LOG_NLEVELS - 1); diff --git a/src/misc/network.cxx b/src/misc/network.cxx index de600269..e6fd6fee 100644 --- a/src/misc/network.cxx +++ b/src/misc/network.cxx @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/src/misc/status.cxx b/src/misc/status.cxx index 8b550de8..df2218ae 100644 --- a/src/misc/status.cxx +++ b/src/misc/status.cxx @@ -6,6 +6,7 @@ #include +#include "gettext.h" #include "main.h" #include "globals.h" @@ -87,7 +88,7 @@ void status::saveLastState() ampspan = progdefaults.wfAmpSpan; LOGenabled = false; - Fl_Menu_Item *mnulogging = getMenuItem("Log File"); + Fl_Menu_Item *mnulogging = getMenuItem(_("Log File")); if (mnulogging) LOGenabled = mnulogging->value(); @@ -289,7 +290,7 @@ void status::initLastState() } if (LOGenabled) { - Fl_Menu_Item *mnulogging = getMenuItem("Log File"); + Fl_Menu_Item *mnulogging = getMenuItem(_("Log File")); if (!mnulogging) return; mnulogging->set(); diff --git a/src/rigcontrol/FreqControl.cxx b/src/rigcontrol/FreqControl.cxx index 72268788..e556f24f 100644 --- a/src/rigcontrol/FreqControl.cxx +++ b/src/rigcontrol/FreqControl.cxx @@ -36,6 +36,7 @@ #include "FreqControl.h" #include "rigdialog.h" +#include "gettext.h" const char *cFreqControl::Label[10] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; @@ -126,7 +127,7 @@ cFreqControl::cFreqControl(int x, int y, int w, int h, const char *lbl): finp->hide(); parent()->remove(finp); - tooltip("Enter frequency or change with\nLeft/Right/Up/Down/Pg_Up/Pg_Down"); + tooltip(_("Enter frequency or change with\nLeft/Right/Up/Down/Pg_Up/Pg_Down")); } cFreqControl::~cFreqControl() diff --git a/src/rigcontrol/rigdialog.cxx b/src/rigcontrol/rigdialog.cxx index 8a75a4b3..c2e67db8 100644 --- a/src/rigcontrol/rigdialog.cxx +++ b/src/rigcontrol/rigdialog.cxx @@ -1,5 +1,6 @@ -// generated by Fast Light User Interface Designer (fluid) version 1.0108 +// generated by Fast Light User Interface Designer (fluid) version 1.0109 +#include "gettext.h" #include "rigdialog.h" #include #include @@ -66,10 +67,10 @@ static void cb_btnRCclose(Fl_Button*, void*) { Fl_Double_Window* rig_dialog() { Fl_Double_Window* w; - { Fl_Double_Window* o = new Fl_Double_Window(560, 80, "Rig Controller"); + { Fl_Double_Window* o = new Fl_Double_Window(560, 80, _("Rig Controller")); w = o; o->box(FL_DOWN_BOX); - { cFreqControl* o = FreqDisp = new cFreqControl(4, 31, 253, 44, "9"); + { cFreqControl* o = FreqDisp = new cFreqControl(4, 31, 253, 44, _("9")); FreqDisp->box(FL_DOWN_BOX); FreqDisp->color(FL_BACKGROUND_COLOR); FreqDisp->selection_color(FL_BACKGROUND_COLOR); @@ -83,8 +84,8 @@ Fl_Double_Window* rig_dialog() { o->SetONOFFCOLOR( FL_RED, FL_BLACK); } // cFreqControl* FreqDisp { FreqSelect = new Fl_Browser(278, 5, 280, 70); - FreqSelect->tooltip("Select operating mode and frequency\nMiddle click to replace, Shift-left clic\ -k to delete"); + FreqSelect->tooltip(_("Select operating mode and frequency\nMiddle click to replace, Shift-left clic\ +k to delete")); FreqSelect->type(2); FreqSelect->box(FL_DOWN_BOX); FreqSelect->labelfont(4); @@ -118,22 +119,22 @@ k to delete"); opBW->when(FL_WHEN_RELEASE); opBW->end(); } // Fl_ComboBox* opBW - { btnAddFreq = new Fl_Button(257, 5, 20, 20, "@|>"); - btnAddFreq->tooltip("Add to list"); + { btnAddFreq = new Fl_Button(257, 5, 20, 20, _("@|>")); + btnAddFreq->tooltip(_("Add to list")); btnAddFreq->labelsize(10); btnAddFreq->callback((Fl_Callback*)cb_btnAddFreq); } // Fl_Button* btnAddFreq - { btnDelFreq = new Fl_Button(257, 30, 20, 20, "@-11+"); - btnDelFreq->tooltip("Delete from list"); + { btnDelFreq = new Fl_Button(257, 30, 20, 20, _("@-11+")); + btnDelFreq->tooltip(_("Delete from list")); btnDelFreq->labelsize(10); btnDelFreq->callback((Fl_Callback*)cb_btnDelFreq); } // Fl_Button* btnDelFreq - { btnClearList = new Fl_Button(257, 54, 20, 20, "@-1square"); - btnClearList->tooltip("Clear list"); + { btnClearList = new Fl_Button(257, 54, 20, 20, _("@-1square")); + btnClearList->tooltip(_("Clear list")); btnClearList->labelsize(10); btnClearList->callback((Fl_Callback*)cb_btnClearList); } // Fl_Button* btnClearList - { btnRCclose = new Fl_Button(4, 5, 50, 20, "Close"); + { btnRCclose = new Fl_Button(4, 5, 50, 20, _("Close")); btnRCclose->callback((Fl_Callback*)cb_btnRCclose); } // Fl_Button* btnRCclose o->end(); diff --git a/src/rigcontrol/rigdialog.fl b/src/rigcontrol/rigdialog.fl index 44d8df11..88e781d2 100644 --- a/src/rigcontrol/rigdialog.fl +++ b/src/rigcontrol/rigdialog.fl @@ -1,5 +1,8 @@ # data file for the Fltk User Interface Designer (fluid) version 1.0107 +i18n_type 1 +i18n_include "gettext.h" +i18n_function _ header_name {.h} code_name {.cxx} decl {\#include } {} diff --git a/src/rigcontrol/rigsupport.cxx b/src/rigcontrol/rigsupport.cxx index 03f28fdd..22e51707 100644 --- a/src/rigcontrol/rigsupport.cxx +++ b/src/rigcontrol/rigsupport.cxx @@ -32,6 +32,8 @@ #include "debug.h" +#include "gettext.h" + using namespace std; Fl_Double_Window *rigcontrol = (Fl_Double_Window *)0; @@ -552,7 +554,7 @@ void setTitle() rigcontrol->label(""); } if (progdefaults.docked_rig_control) { - txtRigName->label("Non CAT mode"); + txtRigName->label(_("Non CAT mode")); txtRigName->redraw_label(); } } @@ -601,7 +603,7 @@ LOG_DEBUG("no rig"); clearList(); buildlist(); - windowTitle = "Rig Not Specified"; + windowTitle = _("Rig Not Specified"); setTitle(); return true; @@ -635,7 +637,7 @@ LOG_DEBUG("Mem Mapped rig"); clearList(); buildlist(); - windowTitle = "Memory Mapped Rig"; + windowTitle = _("Memory Mapped Rig"); setTitle(); return true; diff --git a/src/waterfall/waterfall.cxx b/src/waterfall/waterfall.cxx index 91f6a19a..ff7b95e8 100644 --- a/src/waterfall/waterfall.cxx +++ b/src/waterfall/waterfall.cxx @@ -51,6 +51,7 @@ #include "macros.h" #include "arq_io.h" #include "confdialog.h" +#include "gettext.h" extern modem *active_modem; @@ -1289,13 +1290,13 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) : xpos = x() + wSpace; // bw_rsid = new Fl_Button(xpos, buttonrow, (int)(bwColor*ratio), BTN_HEIGHT, "Id?"); // bw_rsid->callback(bw_rsid_cb, 0); -// bw_rsid->tooltip("Auto detect RSID"); +// bw_rsid->tooltip(_("Auto detect RSID")); // xpos = xpos + (int)(bwColor*ratio) + wSpace; mode = new Fl_Button(xpos, buttonrow, (int)(bwFFT*ratio), BTN_HEIGHT,"Wtr"); mode->callback(mode_cb, 0); - mode->tooltip("Waterfall/FFT - Shift click for signal scope"); + mode->tooltip(_("Waterfall/FFT - Shift click for signal scope")); xpos = xpos + (int)(bwFFT*ratio) + wSpace; wfRefLevel = new Fl_Counter(xpos, buttonrow, (int)(cwRef*ratio), BTN_HEIGHT ); @@ -1305,7 +1306,7 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) : wfRefLevel->range(-40.0, 0.0); wfRefLevel->value(-20.0); wfdisp->Reflevel(-20.0); - wfRefLevel->tooltip("Upper signal level (dB)"); + wfRefLevel->tooltip(_("Upper signal level (dB)")); wfRefLevel->type(FL_SIMPLE_COUNTER); xpos = xpos + (int)(cwRef*ratio) + wSpace; @@ -1316,33 +1317,33 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) : wfAmpSpan->range(6.0, 90.0); wfAmpSpan->value(70.0); wfdisp->Ampspan(70.0); - wfAmpSpan->tooltip("Signal range (dB)"); + wfAmpSpan->tooltip(_("Signal range (dB)")); wfAmpSpan->type(FL_SIMPLE_COUNTER); xpos = xpos + (int)(cwRef*ratio) + wSpace; x1 = new Fl_Button(xpos, buttonrow, (int)(bwX1*ratio), BTN_HEIGHT, "x1"); x1->callback(x1_cb, 0); - x1->tooltip("Change waterfall scale"); + x1->tooltip(_("Change waterfall scale")); xpos = xpos + (int)(bwX1*ratio) + wSpace; left = new Fl_Repeat_Button(xpos, buttonrow, (int)(bwMov*ratio), BTN_HEIGHT, "@<"); left->callback(slew_left, 0); - left->tooltip("Slew display lower in freq"); + left->tooltip(_("Slew display lower in freq")); xpos += (int)(bwMov*ratio); center = new Fl_Button(xpos, buttonrow, (int)(bwMov*ratio), BTN_HEIGHT, "@||"); center->callback(center_cb, 0); - center->tooltip("Center display on signal"); + center->tooltip(_("Center display on signal")); xpos += (int)(bwMov*ratio); right = new Fl_Repeat_Button(xpos, buttonrow, (int)(bwMov*ratio), BTN_HEIGHT, "@>"); right->callback(slew_right, 0); - right->tooltip("Slew display higher in freq"); + right->tooltip(_("Slew display higher in freq")); xpos = xpos + (int)(bwMov*ratio) + wSpace; wfrate = new Fl_Button(xpos, buttonrow, (int)(bwRate*ratio), BTN_HEIGHT, "Norm"); wfrate->callback(rate_cb, 0); - wfrate->tooltip("Waterfall drop speed"); + wfrate->tooltip(_("Waterfall drop speed")); xpos = xpos + (int)(bwRate*ratio) + 2*wSpace; wfcarrier = new Fl_Counter(xpos, buttonrow, (int)(cwCnt*ratio), BTN_HEIGHT ); @@ -1352,18 +1353,18 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) : wfcarrier->precision(0); wfcarrier->range(16.0, IMAGE_WIDTH - 16.0); wfcarrier->value(wfdisp->carrier()); - wfcarrier->tooltip("Adjust cursor frequency"); + wfcarrier->tooltip(_("Adjust cursor frequency")); xpos = xpos + (int)(cwCnt*ratio) + 2*wSpace; qsy = new Fl_Button(xpos, buttonrow, (int)(bwQsy*ratio), BTN_HEIGHT, "QSY"); qsy->callback(qsy_cb, 0); - qsy->tooltip("Cntr in Xcvr PB\nRight click to undo"); + qsy->tooltip(_("Cntr in Xcvr PB\nRight click to undo")); qsy->deactivate(); xpos = xpos + (int)(bwQsy*ratio) + wSpace; btnMem = new Fl_Button(xpos, buttonrow, (int)(bwMem*ratio), BTN_HEIGHT, "Store"); btnMem->callback(btnMem_cb, 0); - btnMem->tooltip("Store mode and frequency\nRight click for list"); + btnMem->tooltip(_("Store mode and frequency\nRight click for list")); mbtnMem = new Fl_Menu_Button(btnMem->x(), btnMem->y(), btnMem->w(), btnMem->h(), 0); mbtnMem->callback(btnMem->callback(), mbtnMem); mbtnMem->type(Fl_Menu_Button::POPUP3); @@ -1373,14 +1374,14 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) : xmtlock->callback(xmtlock_cb, 0); xmtlock->value(0); xmtlock->selection_color(FL_RED); - xmtlock->tooltip("Xmt freq locked"); + xmtlock->tooltip(_("Xmt freq locked")); xpos = xpos + (int)(bwXmtLock*ratio) + wSpace; btnRev = new Fl_Light_Button(xpos, buttonrow, (int)(bwRev*ratio), BTN_HEIGHT, "Rv"); btnRev->callback(btnRev_cb, 0); btnRev->value(0); btnRev->selection_color(FL_GREEN); - btnRev->tooltip("Reverse"); + btnRev->tooltip(_("Reverse")); reverse = false; xpos = w() - (int)(bwXmtRcv*ratio) - wSpace; @@ -1388,7 +1389,7 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) : xmtrcv->callback(xmtrcv_cb, 0); xmtrcv->selection_color(FL_RED); xmtrcv->value(0); - xmtrcv->tooltip("Transmit/Receive"); + xmtrcv->tooltip(_("Transmit/Receive")); } int waterfall::handle(int event)